在MSBuild中构建混合的.Net Standard和.NetFramework解决方案

时间:2019-01-30 12:32:43

标签: msbuild .net-standard-2.0

请原谅。我正在尝试提供尽可能多的信息。

我将某些类从.Net Framework库移到了新.Net Standard 库中,以便从现有.Net Framework 项目和 new中引用它们.Net Core 项目。将新的.net标准项目添加到包含其他.Net Framework项目的解决方案中之后,现有的构建定义(XAML)无法构建.net标准项目。如果我将/ t:restore,build作为MSBuild参数传递,它的构建会很好,但是这会破坏解决方案中现有.net框架项目的构建。视觉工作室 能够构建混合解决方案。我需要在此混合解决方案中构建它,因为下游项目将打包并将其推送到我们的nuget存储库(OctopusDeploy)。

为克服此问题,我尝试使用默认目标和初始目标,但无法通过它。

请参见下面的示例项目:

    <Project InitialTargets="restore" DefaultTargets="publish" Sdk="Microsoft.NET.Sdk">

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <RootNamespace>MyCompany.Common</RootNamespace>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AssemblyName>MyCompany.CommonStandard</AssemblyName>
  </PropertyGroup>

</Project>

使用上面的项目文件,出现此错误。 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ CommonExtensions \ Microsoft \ NuGet \ NuGet.targets(240):目标依赖图中涉及目标“ _FilterRestoreGraphProjectInputItems”的循环依赖/ p>


我尝试过的其他事情:

<Project DefaultTargets="restore;build;publish"  Sdk="Microsoft.NET.Sdk">

OR

<Project DefaultTargets="restore;publish"  Sdk="Microsoft.NET.Sdk">

错误:一堆错误,指出几乎所有内容都是未定义的。 (vbc:未定义类型'System.String'。)注意:传递与/ t:restore,build,publish作品等msbuild目标相同的内容。


<Project Targets="restore,build,publish"  Sdk="Microsoft.NET.Sdk">

OR

<Project DefaultTargets="publish"  Sdk="Microsoft.NET.Sdk">

OR

 <Project DefaultTargets="publish"  Sdk="Microsoft.NET.Sdk">
 <PropertyGroup>
  <BuildDependsOn>
   Restore;
   $(BuildDependsOn);
  </BuildDependsOn>
</PropertyGroup>

错误:找不到\ obj \ project.assets.json'。运行NuGet软件包还原以生成此文件。


<Project InitialTargets="restore"  Targets="build,publish"  Sdk="Microsoft.NET.Sdk">

OR

<Project InitialTargets="restore"  Targets="publish"  Sdk="Microsoft.NET.Sdk">

错误:目标依赖关系图中涉及目标“ _FilterRestoreGraphProjectInputItems”的循环依赖。


感谢您的阅读。我非常感谢您提供解决此问题的指导。

1 个答案:

答案 0 :(得分:0)

事实证明,我的构建定义指向的是无法识别sdk格式的MSBuild。将其更改为MSBuild15并使用restore,build目标后,我就能使它们工作。

相关问题