簡體   English   中英

程序集引用之間的差異

[英]Differences between assembly references

在一些機器上,在csproj中添加對程序集的引用后生成下一個標記。

<Reference Include="Microsoft.Expression.Interactions">
  <HintPath>..\Libs.SL\Blend\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>

但是在某些機器上生成了帶有版本,文化,令牌和處理器架構的參考:

 <Reference Include="Microsoft.Expression.Interactions, Version=5.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\Libs.SL\Blend\Microsoft.Expression.Interactions.dll</HintPath>
</Reference>

為什么是這樣?

從msdn中提取:

處理器體系結構添加到.NET Framework 2.0版中的程序集標識中,以允許特定於處理器的程序集版本。 您可以創建其標識僅由處理器體系結構不同的程序集版本,例如32位和64位處理器特定版本。 強名稱不需要處理器體系結構。 有關更多信息,請參閱AssemblyNameProcessorArchitecture。 在此示例中, 完全限定名稱表示myTypes程序集具有帶有公鑰標記的強名稱,具有美國英語的區域性值,並且版本號為1.0.1234.0。 它的處理器架構是“msil”,這意味着它將根據操作系統和處理器及時(JIT)編譯為32位代碼或64位代碼。

請求程序集中的類型的代碼必須使用完全限定的程序集名稱。 這稱為完全限定綁定。 在.NET Framework中引用程序集時,不允許使用部分綁定(僅指定程序集名稱)。

對構成.NET Framework的程序集的所有程序集引用也必須包含程序集的完全限定名稱。 例如,引用版本1.0的System.Data .NET Framework程序集將包括:

在源代碼中查看更多:

http://msdn.microsoft.com/en-us/library/k8xx4k69.aspx

這些行無法幫助您的應用程序找到正確的引用或創建完全限定的程序集名稱,這些行有助於Visual Studio查找引用。 可能只有在VS確定要加載哪個dll時才會找到這些行。

我知道,這不是您期望的答案:)但我希望它可以幫助您在嚴格的方向進行搜索。

我不是100%肯定,但根據.NET Assemblies通常行為模型,在第二種情況下,您將獲得引用程序集的詳細描述(完全限定名稱),因為計算機上有多個版本的程序集。

這樣編譯器知道它確切地裝配在您的項目中引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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