[英]VS2010 designer Could not find type UserControl, strong name assembly with manifest and delayed signing
嘗試打開winforms表單時出現此錯誤。
找不到類型“ MyCompany.MyControls.MyControl”。 請確保引用了包含此類型的程序集。 如果此類型是開發項目的一部分,請確保已使用當前平台或任何CPU的設置成功構建了該項目。
變量“ NavigationControl”未聲明或從未分配。
程序集使用“僅延遲符號”進行簽名,因為我在構建后事件中將清單與mt.exe包括在一起。 在這里,我還使用sn.exe重新簽署了程序集:
sn.exe -R "$(TargetPath)" "$(ProjectDir)key.snk"
如果我完全禁用該程序集的簽名,那么它將起作用。
還有其他方法嗎? 我認為VS2010正在使用錯誤的強名稱或其他東西來尋找DLL ...
您的程序集延遲簽名。 這意味着,它具有簽名,但是該簽名無效(僅稍后由buildserver使用實鍵構建時才簽名)。 因此,在您的開發人員計算機上,簽名無效,並且程序集未加載。
有兩種選擇:
1)您根本不登錄開發人員計算機。 僅在構建服務器上登錄。
要么
2)確保您的開發人員機器將您的延遲簽名密鑰視為有效,盡管無效。
您可以注冊將進行驗證的密鑰,無論如何。 出於明顯的原因,這僅是DEV MACHINE! 請勿在生產機器上使用,否則您的整個簽名概念將變得毫無意義。
您需要檢查計算機上sn.exe的路徑,它可能有所不同:
“ C:\\ Program Files(x86)\\ Microsoft SDKs \\ Windows \\ v8.0A \\ bin \\ NETFX 4.0 Tools \\ sn.exe” -Vr *,您的關鍵所在
“ C:\\ Program Files(x86)\\ Microsoft SDKs \\ Windows \\ v8.0A \\ bin \\ NETFX 4.0 Tools \\ x64 \\ sn.exe” -Vr *,您的KEYHERE
您需要以管理員身份運行這些命令並重新引導 。
YOURKEYHERE是程序集的公鑰標記,執行此操作時,位於PublicKeyToken =之后的部分:
Console.WriteLine(typeof(ATYPEOFYOURASSEMBLY).AssemblyQualifiedName);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.