【发布时间】: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 项目会失败,并显示“项目中不存在目标“还原”。”