首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在visual中构建和构建dotnet会产生不同的输出?

为什么在visual中构建和构建dotnet会产生不同的输出?
EN

Stack Overflow用户
提问于 2019-09-14 15:42:31
回答 1查看 3.8K关注 0票数 1

我正在建设一个项目,生产一个nuget包。nuget包的配置在我的csproj文件中。我有

代码语言:javascript
复制
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>

我也有一些资产,我想把它们包括在nuget包中,我把它放在csproj文件中。

代码语言:javascript
复制
<ItemGroup>
  <_PackageFiles Include="$(OutputPath)\clidriver\**">
    <BuildAction>None</BuildAction>
    <PackagePath>\build\clidriver\</PackagePath>
  </_PackageFiles>
</ItemGroup>

当我从visual studio构建时,资产很好地包含在生成的nuget包中。但是,当我使用dotnet.exe进行构建时,不包括资产。

为什么会有这种区别?

有什么办法让dotnet.exe也包括我的资产吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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中找到。请检查一下你是否有类似的问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57936985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档