簡體   English   中英

VS2010設計器找不到類型UserControl,具有清單和延遲簽名的強名稱程序集

[英]VS2010 designer Could not find type UserControl, strong name assembly with manifest and delayed signing

嘗試打開winforms表單時出現此錯誤。

  1. 找不到類型“ MyCompany.MyControls.MyControl”。 請確保引用了包含此類型的程序集。 如果此類型是開發項目的一部分,請確保已使用當前平台或任何CPU的設置成功構建了該項目。

  2. 變量“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM