2011-05-19 17 views
1

我最近開始使用Jenkins來簡化應用程序開發。我有一個Asp.net網站,我正在嘗試使用它進行部署。關於構建如何讓ASP.NET WebSite使用正確的程序集(文件引用代替路徑/ GAC)

詳情:

  • 該項目從Visual Source Safe中使用詹金斯retreived。
  • 然後是使用msbuild編譯
  • 一旦它被構建,它就被部署到測試服務器。

編譯運行正常,沒有錯誤,沒有警告。

當我將Web應用程序從PrecompiledWeb文件夾複製到測試服務器時,應用程序崩潰時執行某些操作。我得到的例外是:

Exception type: FileLoadException 
    Exception message: Could not load file or assembly 'Oracle.DataAccess, 
    Version=2.111.7.20, Culture=neutral, PublicKeyToken=89b483f429c47342' or 
    one of its dependencies. The located assembly's manifest definition 
    does not match the assembly reference. 
    (Exception from HRESULT: 0x80131040) 

但是,如果我複製從網站的文件夾中的Web應用程序,一切工作正常。

注意:所有非Microsoft程序集都存儲在解決方案級別的名爲Assemblies的文件夾中。項目中的所有引用都指向了組合。

有沒有一種方法可以找到衝突來自哪裏,所以我可以使用PrecompiledWeb文件夾進行部署。

編輯: 看來我有不止一個程序集在我的項目中引用,但我不知道如何只得到一個。我在對象瀏覽器檢查,我的解決方案選擇,我得到以下 Both assemblies in object browser

看來,該網站項目是一個造成麻煩(當我從溶液中取出,只有合適的組件中所示對象瀏覽器)。

回答

0

在您的Visual Studio項目中,當您在引用中選擇該DLL並查看其屬性時,將複製本地設置爲true?如果不是,可能不會將DLL複製到輸出文件夾。

+0

這是一個網站項目,所以我不能選擇複製本地參考。實際上,添加對WebSite的引用只會將其複製到bin。當我查看屬性頁面中的項目時,不會在那裏添加引用(我的猜測是,它可能會嘗試使用GAC) – Martin 2011-05-19 16:58:29

1

以XML形式打開項目文件並找到相關參考。與不合格的名稱和它指向你的代碼那個地方的組件已經查了HintPath改變它,所以它不會有一個強大的組件名稱,例如,

<Reference Include="Oracle.DataAccess, Version=2.102.2.20, Culture=neutral, PublicKeyToken={SOME-KEY}, processorArchitecture=MSIL" /> 

...一個在,

<Reference Include="Oracle.DataAccess"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Oracle\Oracle.DataAccess.dll</HintPath> 
</Reference> 

(當然,我只是做了這些細節,沒有甲骨文)

注意,它不會,如果你的當前和借鑑似乎已經有HintPath集沒關係如果它具有強大的組合名稱,那麼GAC中的任何內容都將會h大前提。

+0

嗯...我無法在網站中執行該操作,但您沒有一個可以打開爲XML的項目文件 – Martin 2011-05-20 17:34:07

相關問題