.net core 使用.NET core 2.0和.NET framework项目进行Dotnet发布

.net core 使用.NET core 2.0和.NET framework项目进行Dotnet发布,.net-core,teamcity,octopus-deploy,dotnet-cli,.net Core,Teamcity,Octopus Deploy,Dotnet Cli,我希望有人能就使用Teamcity构建和发布既包含.NET核心/标准2.0项目又包含.NET framework 4.6.x项目的解决方案的最佳方式提供一些建议 目前,我可以构建项目,运行测试,但我无法找到通过dotnetcli发布它的方法。我们有一个相对较大的解决方案,大约75个.NET核心/标准项目和5个或一些框架项目。在我们的解决方案上运行dotnet publish会导致.NET framework项目出现以下错误: 错误:C:\Program Files\dotnet\sdk\2.0.

我希望有人能就使用Teamcity构建和发布既包含.NET核心/标准2.0项目又包含.NET framework 4.6.x项目的解决方案的最佳方式提供一些建议

目前,我可以构建项目,运行测试,但我无法找到通过dotnetcli发布它的方法。我们有一个相对较大的解决方案,大约75个.NET核心/标准项目和5个或一些框架项目。在我们的解决方案上运行dotnet publish会导致.NET framework项目出现以下错误:

错误:C:\Program Files\dotnet\sdk\2.0.3\Microsoft.Common.CurrentVersion.targets(3861,5):错误MSB4062:未能从程序集Microsoft.Build.Tasks.Core加载“Microsoft.Build.Tasks.ResolveManifestFiles”任务,版本=15.1.0.0,区域性=中性,PublicKeyToken=b03f5f7f11d50a3a。确认声明正确,程序集及其所有依赖项可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类


如果cli可以尝试忽略发布.NET Framework项目,这将是理想的,但这似乎是不可能的。我正在考虑编写一个powershell脚本,以检查解决方案中的所有csproj文件是否具有适当的TargetFramework值(即netstandard2.0/netcoreapp2.0),并单独发布它们,但也许有人知道更好的方法?

如果有人面临同样的问题,您需要按照@nvoigt的建议重新构造您的csproj文件

您可以按照文章中描述的步骤进行操作

您可以开始清除csproj文件,并从以下格式开始

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net462</TargetFramework> // if your target is 4.6.2
  </PropertyGroup>
</Project>

  

Exe
net462//如果您的目标是4.6.2
现在,您可以添加剩余的依赖项,如下所示

   ...
      <ItemGroup>
        <PackageReference Include="Dapper" Version="2.0.4" />
        <PackageReference Include="Microsoft.Azure.Storage.Blob" Version="11.1.1" />
        <PackageReference Include="Microsoft.Extensions.Configuration" Version="3.0.0" />
        <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.0.0" />
        <PackageReference Include="Microsoft.Extensions.Logging" Version="3.0.0" />
        <PackageReference Include="Microsoft.Azure.KeyVault" Version="2.0.6" />
        <PackageReference Include="NLog" Version="4.7.5" />
        <PackageReference Include="NLog.Extensions.Logging" Version="1.6.5" />
      </ItemGroup>
   ...
。。。
...

您可以在帖子中找到更多详细信息。

您的所有项目都使用新的csproj文件结构吗?
dotnet
CLI仅适用于此。谢谢,这解决了问题。有没有办法在VisualStudio中使用新的csproj格式创建新的框架项目?我按照以下说明更换csproj内容: