簡體   English   中英

Nuget未安裝在Azure DevOps版本中

[英]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任務。

作為測試,我創建一個內容包並添加復制事件以從該內容包中復制文件:

在此處輸入圖片說明

安裝該軟件包后,以下內容將添加到項目文件.csprojpackages.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM