【问题标题】:Build hybrid .Net Standard and .NetFramework solution in MSBuild在 MSBuild 中构建混合 .Net Standard 和 .NetFramework 解决方案
【发布时间】:2019-06-23 17:50:33
【问题描述】:

请原谅长篇大论。我试图提供尽可能多的信息。

我将一些类从 .Net Framework 库移到 新的 .Net Standard 库中,以便从 现有的 .Net Framework 项目和 新的项目中引用它们.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”


我尝试过的其他事情:

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

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

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

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

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

错误:目标依赖图中存在循环依赖,涉及目标“_FilterRestoreGraphProjectInputItems”。


感谢阅读。我非常感谢任何解决此问题的指导。

【问题讨论】:

  • 当您说“现有构建定义无法构建”时,您是什么意思?某处有错误?
  • 如果不传入 /t:restore,build,.net 标准项目将失败,找不到“project.assets.json”。运行 NuGet 包还原以生成此文件。错误。如果我将其传入,.net 标准项目会构建,但 .Net Framework 项目会失败,并显示“项目中不存在目标“还原”。”

标签: msbuild .net-standard-2.0


【解决方案1】:

事实证明,我的构建定义指向了无法识别 sdk 格式的旧版 MSBuild。在将其更改为 MSBuild15 并使用 restore,build 目标后,我能够让这些工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 2022-07-14
    相关资源
    最近更新 更多