亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

nuget.exe 無法識別 nuspec 文件中的任何目標框架

nuget.exe 無法識別 nuspec 文件中的任何目標框架

C#
人到中年有點甜 2023-09-24 16:12:55
我有一個項目,通過在 CSPROJ 文件中設置以下選項,直接在 Visual Studio 中生成 NuGet 包:<GeneratePackageOnBuild>true</GeneratePackageOnBuild>這會導致生成的包包含所有已標記為“復制到輸出目錄=不復制”的嵌入資源文件。遺憾的是,Visual Studio 的自動打包程序選擇始終將這些文件復制到 NuGet 包中。為了解決這個問題,我一直在研究編輯 .NUSPEC 文件并從命令行使用 NUGET.EXE 來創建包。然后我遇到了一個新問題。通過使用 NUGET.EXE 而不是 Visual Studio,生成的包將依賴項部分顯示為“不受支持”,我通過在“NuGet Explorer”中打開包來看到這一點:這是用于創建包的 .bat 文件:c:\nuget\nuget.exe config -Set repositoryPath="%USERPROFILE%\.nuget\packages"c:\nuget\nuget.exe pack -IncludeReferencedProjects -properties Configuration=Release這是 NUSPEC 文件:<?xml version="1.0" encoding="utf-8"?><package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">  <metadata>    <id>Integrative.Lara</id>    <version>0.5.3</version>    <authors>Pablo Carbonell, Integrative Software LLC</authors>    <owners>Pablo Carbonell, Integrative Software LLC</owners>    <requireLicenseAcceptance>true</requireLicenseAcceptance>    <license type="file">LICENSE</license>    <projectUrl>https://github.com/integrativesoft/lara</projectUrl>    <iconUrl>https://integrative.b-cdn.net/Integrative.ico</iconUrl>    <description>Lara is ...</description>    <copyright>Copyright (c) 2019 Integrative Software LLC</copyright>    <tags>lara, web, html, html5, desktop, gui, cross, framework, mac, osx, platform, ui, blazor, razor</tags>    <repository url="https://github.com/integrativesoft/lara" />    <dependencies>      <group targetFramework=".NETStandard2.0">        <dependency id="Microsoft.AspNetCore" version="2.2.0" exclude="Build,Analyzers" />        <dependency id="Microsoft.AspNetCore.WebSockets" version="2.2.1" exclude="Build,Analyzers" />      </group>    </dependencies>  </metadata></package>有沒有辦法修復“不受支持”的目標?我也嘗試使用“netstandard2.0”和其他標識符,但仍然得到相同的“不受支持”。或者,有沒有辦法使用 Visual Studio 的自動包生成并阻止它在包中包含文件?
查看完整描述

1 回答

?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

如您所見,當您使用 nuspec 時,您有責任做好每一件小事。使用 NuGet 的 MSBuild 包目標更容易,因為它可以自動執行創建依賴項等操作,包括在組中使用正確的 TFM。

NuGet 關于打包目標的文檔包含與使用 msbuild 打包相關的內容(這就是您使用dotnet pack或時發生的情況GeneratePackageOnBuild)。特別是關于在包中包含內容的部分有以下示例:

<Content?Include="..\win7-x64\libuv.txt">
?<Pack>false</Pack>
?</Content>

由于您的文件是嵌入的,您的 csproj 將包含類似<EmbeddedResource Include="whatever.ext" />.?因此,使用文檔中的信息,您可以這樣做<EmbeddedResource Include="whatever.ext" Pack="false" />,或者像文檔一樣使用多行版本。MSBuild 允許您以任何一種方式設置項目元數據。

<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

關于GeneratePackageOnBuild的注意事項:讓build為你創建包很方便,但這意味著當你在調試并且需要在再次測試之前更改一行代碼時,你不僅要等待構建,還需要等待盒。如果你的包很小,它可能相當快,但它仍然會減慢你的“內循環”體驗。大多數開發人員只需要打包的頻率遠低于構建的頻率,因此我建議禁用GeneratePackageOnBuild,并dotnet pack在您實際需要 nupkg 時在項目(或解決方案)上運行。


查看完整回答
反對 回復 2023-09-24
  • 1 回答
  • 0 關注
  • 173 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號