假設我們有以下項目結構:的NuGet和TFS 2013的構建時,SharePoint 2013包找不到裝配
D:\workspace\Internet\Web
Web.sln
-> Project A
-> Project B
-> CommonSharePointProject X
-> uses and packages Newtonsoft.Json (for example)
D:\workspace\Common
CommonLibraries.sln
-> CommonSharePointProject X
-> uses and packages Newtonsoft.Json
-> Common Library Y
-> Common Library Z
我的問題是,常用的庫。 軟件包目錄將在解決方案的目錄下創建。 從Visual Studio中部署工作得很好。 CommonLibrary X在Web \ packages ...文件夾中引用了newtonsoft.json.dll。
但是,TFS Build期望newtonsoft.json.dll位於CommonLibraries \ packages中。 這是爲什麼?我該如何解決這個問題?
的錯誤如下: d:\ ws_build \ 1 \ CMP04 \ Buildname的\ src \共同文件\ SharePoint \東西\ MAIN \ CommonSharePointLibrary \包\ Package.package:以下文件無法找到: 「d:\ ws_build \ 1 \ CMP04 \ BuildName的\ src \共同文件\ SharePoint \東西\ MAIN \包\ Newtonsoft.Json.6.0.1 \ LIB \ net45 \ Newtonsoft.Json.dll」。
...構建過程構建D:\ ws_build \ 1 \ CMP04 \ Buildname \ src \ Internet \ Web \ web.sln。 那麼爲什麼它不在internet \ web \ packages而不是普通的... \ packages中尋找程序集?
SharePoint程序包使用相對路徑引用第三方程序集:「.. \ packages \ Newtonsoft.Json.6.0.1 \ lib \ net45 \ Newtonsoft.Json.dll」。所以很顯然,在TFSBuild中,相對路徑指向與Visual Studio不同的地方。
另外假設我有另一個解決方案... CommonSharePointProject的引用Newtonsoft.Json指向哪裏?由於項目在多個解決方案中使用,因此我無法在每個解決方案中對不同的包文件夾有不同的參考。只有一個.csproj文件。
D:\workspace\Intranet\OtherWeb
OtherWeb.sln
-> OtherProject A
-> OtherProject B
-> CommonSharePointProject X
-> uses and packages Newtonsoft.Json
我已經有這個地方。包還原和只有packages.config在我的源代碼管理的包文件夾中。它對多個引用同一個.csproj沒有幫助。 – lapsus
修復了編輯? ;) –
不幸的是 - 我在解決方案中添加了你提到的nuget包給每個啓用nuget的項目。仍然沒有運氣。它似乎與SharePoint相關,因爲它不能*封裝*程序集。 (它編譯得很好。) – lapsus