2011-11-30 60 views
1

我有一個設置,在每次構建後,程序集發佈到GAC。但我的應用程序一直使用舊的dll。生成後,新的dll被創建在一個新的文件夾中。文件夾名稱是7.1.7573.0_ d516cb311和7.1.5000.8888 _d516cb311。第二個文件夾是最新的。它似乎(從文件夾名稱)我目前的代碼是發佈舊的DLL。這是我的應用程序使用舊DLL的原因嗎?如果是,我需要做什麼才能發佈正確的程序集?GAC中的舊dll仍在使用中

編輯:

在web.config文件中,程序集註冊在運行時元素下。其版本是Version 7.0.0.0。

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
<qualifyAssembly partialName="dllpartialname" fullName="dllfullname,version=7.0.0.0,publicKeyToken=d516cb311,culture=neutral"/> 
</runtime> 
</assemblyBinding> 

編輯2: 現在我知道問題是什麼。我的web項目引用了一個版本爲7.1.7573.0的程序集。但是assemblyinfo.cs文件(我的classlibrary)中的assemblyversion是7.1.5000.8888。在構建類庫項目時,它正在向GAC發佈一個版本爲7.1.5000.8888的程序集(即assemblyinfo.cs文件中的assemblyversion)。但是因爲我的web項目對7.1.7573.0有一個引用。它仍然使用文件夾7.1.7573.0_d516cb311中的dll,並忽略其他文件夾。

編輯3: 現在面對一個不同的問題。我更新了assemblyinfo.cs文件中的彙編版本。但是當我嘗試構建它時,它會自動恢復更改。它說這個文件在源代碼編輯器之外被修改過。這是爲什麼發生?有沒有人有關於它的想法?

感謝, 西德妮

+0

你可以把你的配置如何引用文件?就像'' –

+0

它正在按照它的方式工作,爲您提供所需的程序集。對版本號的一些溫柔的愛護將是明智的,具有編號爲7573的老版本*比編號爲5000的版本並不漂亮。 –

回答

0

你已經是這個問題,GAC總是獲勝。

當您引用dll時,即使您引用了不同的本地dll,GAC中的版本也會獲勝。

無論是從您的GAC

刪除舊的dll

添加一個新的參考DLL的新的本地版本和更改配置線,以配合新的DLL的版本號。

版本號可以在文件的屬性中找到。

+0

刪除較舊的DLL只會轟炸他的程序。版本號總是贏。 –