2015-11-17 48 views
0

這裏有類似的問題,但我已經用盡了我找到的這個問題的每個解決方案。MSBuild失敗,缺失參考

我的解決方案在本地編譯並運行正常,但是當我檢入我的代碼並運行MSBuild時,它會失敗,並顯示錯誤The type or namespace name 'DbUp' could not be found

DbUp在Nuget上可用,但我必須使用我收到的修改版本,所以我手動將它拖入我的包文件夾中,然後通過瀏覽到項目中的.dll來引用它。

我首先試圖通過刪除.dll並嘗試再次引用它來解決此問題。然後我刪除了整個項目並再次嘗試了這個過程。儘管如此,它每次都會在本地編譯和運行,但每次檢查我的代碼並運行MSBuild時都會失敗。

我檢查了項目文件和參考似乎是有罰款:

<Reference Include="DbUp"> 
    <HintPath>..\packages\dbup\DbUp.dll</HintPath> 
</Reference> 

我不明白的事情是,我會清理我的解決方案,然後重新編譯和DbUp.dll是在我的倉。那麼爲什麼MSBuild無法找到參考?

讓我知道你是否需要任何額外的信息來幫助。謝謝。

+0

源代碼管理下的packages文件夾? –

+0

是的,它是在源代碼控制下 – cfly24

回答

0

我假設你在構建服務器上構建它。如果是這種情況,那麼問題可能是構建服務器在構建解決方案之前不會恢復NuGet包。

結賬後,您可以在生成解決方案之前發出NuGet恢復。您可能需要調整nuget.exe以及解決方案的路徑。

nuget.exe restore <YourSolution>.sln 

當構建過程構建您的解決方案時,包應該在那裏。

+0

嗯...仍然失敗,同樣的錯誤。 – cfly24

+0

如果您完全清理解決方案,同時刪除輸出bin目錄並重命名您的本地包文件夾,它是否會編譯?確保您的解決方案已啓用恢復軟件包。 Visual Studio可能在bin目錄中找到dll,這就是它在您的機器上編譯的原因。 – JAZ

+0

我一直在做乾淨和刪除斌,但我沒有嘗試重命名本地包文件夾。我正在使用的'DbUp'版本是一個修改版本,與Nuget不一樣。如果我這樣做,那麼它會不會從Nuget獲取版本? – cfly24