使用.NET Core 2.0和.NET Framework项目进行Dotnet发布

3
我希望有人能就如何使用Teamcity来构建和发布同时包含.NET Core/standard 2.0项目和.NET Framework 4.6.x项目的解决方案提供一些建议。
目前,我可以构建项目,运行测试,但是我无法通过dotnet-cli找到发布的方法。我们有一个相对较大的解决方案,其中约有75个.NET core/standard项目和5个或更多框架项目。在我们的解决方案上运行dotnet publish会导致.NET framework项目出现以下错误:
error: C:\Program Files\dotnet\sdk\2.0.3\Microsoft.Common.CurrentVersion.targets(3861,5): error MSB4062: 无法从程序集Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a中加载“Microsoft.Build.Tasks.ResolveManifestFiles”任务。请确认声明正确、程序集及其所有依赖项都可用,并且该任务包含实现Microsoft.Build.Framework.ITask的公共类。
如果cli能够忽略发布.NET Framework项目,那将是理想的,但似乎不可能。我正在考虑编写一个PowerShell脚本,检查我们解决方案中所有csproj文件的TargetFramework值是否适当(即netstandard2.0/netcoreapp2.0),并单独发布它们,但也许有人知道更好的方法?

你所有的项目都使用新的csproj文件结构了吗?只有dotnet CLI才能与之配合使用。 - nvoigt
1
谢谢,这解决了问题。在Visual Studio中有没有一种方法可以使用新的csproj格式创建新的框架项目?我按照以下替换csproj内容的说明进行操作:https://hanskindberg.wordpress.com/2017/04/18/net-framework-project-with-visual-studio-2017-csproj/ - Benedict
1个回答

0

如果有人遇到同样的问题,需要按照 @nvoigt 的建议重新构建你的 csproj 文件。

你可以按照 从旧 csproj 到新 csproj 中描述的步骤进行操作。

你可以清空你的 csproj 文件并按照以下格式开始。

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

  

现在,您可以像下面这样添加剩余的依赖项。

   ...
      <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>
   ...

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接