我正在建设一个项目,生产一个nuget包。nuget包的配置在我的csproj文件中。我有
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>我也有一些资产,我想把它们包括在nuget包中,我把它放在csproj文件中。
<ItemGroup>
<_PackageFiles Include="$(OutputPath)\clidriver\**">
<BuildAction>None</BuildAction>
<PackagePath>\build\clidriver\</PackagePath>
</_PackageFiles>
</ItemGroup>当我从visual studio构建时,资产很好地包含在生成的nuget包中。但是,当我使用dotnet.exe进行构建时,不包括资产。
为什么会有这种区别?
有什么办法让dotnet.exe也包括我的资产吗?
发布于 2019-09-16 06:47:05
为什么会有这种区别?
内置VS调用msbuild来构建项目,dotnet构建也调用msbuild来构建以.net核心为目标的项目。因此,如果设置相同的大小,那么在大多数情况下,它们的构建和包结果应该是相同的。
1.它在我的机器上运行良好,在VS2017中构建和用.net core3.0构建的dotnet都有相同的结果,它们都包括资产。因此,这个问题可能与您的.net核心sdk版本有关,我建议您安装.net core SDK 2.2或更高版本来检查它是否有用。( VS2017为2.2.109,VS2019为2.2.402 )
2.造成此问题的另一个原因可能是您前面提到的资产没有找到。根据$(OutputPath)\clidriver\**,在输出路径下有一个包含一些资产的clidriver文件夹。
当您设置不同的配置时,$(OutputPath)的值可以更改。在调试模式下构建项目(xx.csproj)时,应确保资产在ProjectFolder\bin\Debug\netcoreapp\clidriver中存在,而在发布模式下则应确保资产存在于ProjectFolder\bin\release\netcoreapp\clidriver中。
因此,我猜想,在VS中构建时,您处于调试模式,并且将资产放在那里(bin\Debug\netcoreapp\clidriver),因此它在nuget包中包含资产。在配置发布版中使用dotnet时,它不包含资产,因为资产不在bin\release\netcoreapp\clidriver中找到。请检查一下你是否有类似的问题。
https://stackoverflow.com/questions/57936985
复制相似问题