2012-03-23 51 views
4

在ASP.NET MVC3項目,我有這樣的結構:.NET MVC 3部署包丟失的參照

Core.csproj 
-> 3rdparty1.dll 
    -> 3rdpartyreference.dll 
-> 3rdparty2.dll 

Web.csproj 
-> core.dll 

我使用生成部署包功能在VS2010。當我構建時,在最終的bin目錄中缺少一些引用。它只包含web.dll,core.dll,3rdparty1.dll和3rdparty2.dll,但缺少3rdpartyreference.dll。

如何強制部署功能複製所有必要的參考? (無需在csproj中的afterbuild中手動創建特定「copy something.dll」指令)

回答

2

VS 2010部署包和發佈功能中涉及的MSBuild任務無法根據您的應用依賴於依賴於另一個的程序集的位置獲取間接引用。您可以手動複製文件(不推薦),也可以將未使用的引用變量添加到指向thirdpartyreference.dll中的某個類的核心項目中。這個引用變量,即使不使用,也會導致VS 2010認爲你對該第三方DLL有一個明確的依賴關係,並按預期將其複製到bin目錄。

+0

我決定採用這種方法,因爲它不需要2個物理副本來保持最新。是否有一些新的VS的計劃有一個配置設置爲這種情況下(強制包含所有參考)? – jaap 2012-03-24 08:46:45

1

您正在查找的功能稱爲「Bin部署」。在這article有一個循序漸進的解決方案。基本上,您需要將可部署的程序集添加到項目中 - 特定的文件夾將顯示在項目結構中,您可以在其中添加必需的dll文件。

+0

不知道爲什麼這是downvoted,這是一個很好的答案。你可能需要讀一點,但有這樣的:'所以這是踢球。如果你正在構建一個web應用程序,並且你需要部署一個程序集,但不希望它被引用,並且不希望它被檢入到bin目錄中,你可以簡單地自己添加這個文件夾,並將你自己的程序集放在這裏。這正是OP要求的。 – CodingGorilla 2012-03-23 20:38:52

+0

這項工作沒問題,但它需要我保留2份參考文獻。一個在我自己的../packages/reference.dll中,我保留所有外部引用,另一個保存在_bin_deployableAssemblies中。有沒有一種很好的方式只在第二個目錄中引用,而不是物理複製? – jaap 2012-03-23 21:32:15

+0

嘗試添加爲鏈接。右鍵點擊 - >添加 - >現有項目 - >選擇.dll,然後點擊按鈕上的「添加」文本右側的箭頭 - >作爲鏈接 – 2012-03-23 21:34:28