![](/img/trans.png)
[英]Azure Devops Pipeline build on OFFLINE server - NuGet packages?
[英]Nuget not installing in Azure DevOps build
我試圖停止將任何來自Nuget包的內容存檔到代碼源存儲庫中。 大多數情況下,由於它們只有dll,因此可以正常工作。 我的問題是我在nupkg中有一個帶有Content
文件夾的Nuget。 使用VS2017進行構建時,所有內容均已正確安裝,但是使用構建服務器(Azure DevOps Pipeline)執行相同操作時,我得到了
Error MSB3030: Could not copy the file "....." because it was not found.
根據功能,管道代理版本為v.2.122.1。 NuGet Task使用帶有MsBuild 14.0的NuGet 3.3.0.212記錄版本0.2.31。
我在packages
文件夾中看到了nupkg文件,但是Content
文件夾中的項目沒有被復制。
我有什么需要添加到csproj的特殊內容,還是應該添加到構建定義中的任何其他步驟?
我有什么需要添加到csproj的特殊內容,還是應該添加到構建定義中的任何其他步驟?
您需要更改csproj文件以鏈接內容包中的文件,而不是將文件添加到項目中。 由於您試圖停止將任何來自Nuget包的內容存檔到代碼源存儲庫中,因此請在構建定義中添加一個nuget restore任務。
作為測試,我創建一個內容包並添加復制事件以從該內容包中復制文件:
安裝該軟件包后,以下內容將添加到項目文件.csproj
和packages.config
:
.csproj:
<ItemGroup>
<Content Include="resources\Test.txt" />
<Content Include="resources\Test2.txt" />
</ItemGroup>
Packages.config:
<packages>
<package id="TestContentPackage" version="1.0.0" targetFramework="net461" />
</packages>
然后,我們更改.csproj
文件以鏈接內容包中的文件:
<ItemGroup>
<Content Include="..\Packages\TestContentPackage.1.0.0\content\resources\Test.txt" />
<Content Include="..\Packages\TestContentPackage.1.0.0\content\resources\Test2.txt" />
</ItemGroup>
更改后,內容包中的文件不會添加到項目中,只需鏈接到項目即可:
為了驗證復制命令,我在構建事件中添加了以下復制命令:
if not exist $(ProjectDir)TestFolder mkdir $(ProjectDir)TestFolder
xcopy /y "$(SolutionDir)Packages\TestContentPackage.1.0.0\content\resources\Test2.txt" "$(ProjectDir)TestFolder"
所有的東西在我本地都可以正常工作。
然后,我使用Azure devops構建該項目,您需要添加nuget restore任務,否則,Visual Studio / MSBuild無法從包中找到文件。 而且它也可以正常工作。
注意:如果要從內容文件夾復制文件,則需要從packages
文件夾復制文件。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.