2014-10-01 91 views
3

我有一個C#項目引用了側面程序集。當我嘗試更新的雙面組件,版本標籤停留在* .csproj的文件,即使我卸載/重裝項目相同:C#項目:如何更新引用的程序集版本

<Reference Include="<myAssembly>, Version=<oldVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath><myHintPath></HintPath> 
</Reference> 

所以我的項目試圖引用一箇舊版本的集會,並導致一個例外。手動更改引用中的所有版本是非常痛苦的,尤其是在引用很多的情況下。

我試圖改變一些參考屬性,像SpecificVersion,以True和回False,並參考刷新:

<Reference Include="<myAssembly>, Version=<newVersion>, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL"> 
     <SpecificVersion>False</SpecificVersion> 
     <HintPath><myHintPath></HintPath> 
</Reference> 

任何想法,如何自動更新引用,如果我更新的組件?需要注意的是,當我引用任何系統組裝像System.Configuration.Install,參考是非常簡單的:

<Reference Include="System.Configuration.Install" /> 

我可以手動從參考雙面組件移除一切,但是當我改變一些屬性,它就會回到複雜的版本,我不確定這是否安全。

那麼如何正常更新引用?

+0

從幾想法[毫秒](http://msdn.microsoft.com/en-us/library/51ket42z(V = VS 0.110)的.aspx)。 1)看看舊的dll是否在GAC中。如果是這樣,刪除它 2)看看DLL版本#是否在app.config中,如果是的話,改變它。 – 2014-10-01 16:14:29

+0

相關:[程序集引用的「特定版本」屬性在Visual Studio中的工作原理是什麼?](http://stackoverflow.com/q/24022134/2157640) – Palec 2016-08-06 19:27:40

回答

5

如果您始終想從指定路徑獲取最新版本的程序集,請避免csproj文件中的版本屬性或將SpecificVersion設置爲False。 SpecificVersion是一個可選屬性,用於指示是否執行完整的名稱匹配(包括版本,文化和PublicKeyToken)。

<Reference Include="assemblyNameOnly"> 
    <HintPath>pathToDll</HintPath> 
</Reference> 

但是,這是不推薦的,因爲新版本的程序集可能導致編譯錯誤,例如,方法簽名被改變。相反,最好使用強有力的命名程序集,並使用配置文件redirect assembly versions

<Reference Include="assemblyName, Version=Version, Culture=neutral, PublicKeyToken=keyToken, processorArchitecture=MSIL"> 
    <SpecificVersion>True</SpecificVersion> 
    <HintPath>pathToDll</HintPath> 
</Reference> 

然後運行時將定位新組件使用算法描述here

+0

因此,如果最好使用默認變體,通過Visual Studio自動刷新引用?或者沒有什麼可做的,但要添加/刪除引用? – 2014-10-02 07:14:25

+0

如果要使用的新版本的dll包含Publisher策略文件並在GAC中註冊,則重定向到新程序集將自動完成。發佈者策略文件由dll供應商提供,並定義從以前版本到新版本的重定向。如果您沒有發佈者策略文件,則可以手動在應用配置或計算機配置文件中設置程序集重定向。看下一篇文章http://www.c-sharpcorner.com/uploadfile/satisharveti/introduction-to-publisher-policy-file/和http://msdn.microsoft.com/en-us/library/7wd6ex19(v = vs.110)的.aspx – rsemenov 2014-10-02 09:37:16

相關問題