Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 导入文件';xxx.目标和x27;导致循环依赖_C#_Msbuild_Nuget - Fatal编程技术网

C# 导入文件';xxx.目标和x27;导致循环依赖

C# 导入文件';xxx.目标和x27;导致循环依赖,c#,msbuild,nuget,C#,Msbuild,Nuget,我有一个名为“Contoso.Library”的NuGet包,其中有一个目标文件:“/build/Contoso.Library.targets” 但是,当我尝试构建包含此内容的项目时,会出现以下错误: 将文件“C:\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.sdk\sdk\sdk.targets”导入文件“C:\Users\rb.nuget\packages\contoso.library\1.0.0\build\contoso.l

我有一个名为“Contoso.Library”的NuGet包,其中有一个目标文件:“/build/Contoso.Library.targets”


但是,当我尝试构建包含此内容的项目时,会出现以下错误:

将文件“C:\Program Files\dotnet\sdk\2.1.2\Sdks\Microsoft.NET.sdk\sdk\sdk.targets”导入文件“C:\Users\rb.nuget\packages\contoso.library\1.0.0\build\contoso.library.targets”会导致循环依赖关系。C:\Users\rb.nuget\packages\contoso.library\1.0.0\build\contoso.library.targets

<Project Sdk="Microsoft.NET.Sdk">
  <ItemGroup>
    <DotNetCliToolReference Include="dotnet-xunit" Version="2.3.0" />
  </ItemGroup>
</Project>

我已经确认,如果我将目标文件重命名为“contoso.library.targets.xxx”,这个错误就会消失,表明目标文件就是问题所在

以下是使用Contoso.Library的项目的项目文件,以供参考:

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

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Contoso.Library" Version="1.0" />
  </ItemGroup>

</Project>

网络46

事实证明答案其实很简单-只需从目标文件中的项目元素中删除“Sdk”属性:

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

变成

<Project>

相同的错误和相同的解决方案(谢谢@RB.!),但我使用的是
目录.Build.props
文件而不是目标文件

我的错误:

导入文件“C:\Program” 文件\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.sdk\sdk\sdk.props”转换为 文件“\Directory.Build.props”将生成一个循环 依赖性

精确解:
我从
目录.Build.props
中删除了
Sdk=“Microsoft.NET.Sdk”
属性,项目正确重建


Sdk
属性决定了是使用新的
.csproj
格式还是旧的
.csproj
格式。所有这一切只不过是将您切换回使用旧的
.csproj
格式(这是好事还是坏事取决于具体情况)。就我个人而言,我会尝试找到一种不切换回旧的
.csproj
格式的方法。但是“Sdk”属性仍然会在csproj文件中设置,所以我仍然会使用新的格式,对吗?哦,我误解了你是在主项目中而不是在目标文件中这样做的。然后是的,删除这个是正确的解决方案。我最终来到这里是为了解决我的问题,因为MS文档中没有任何地方提供这样的信息+我只能给你这么多+1000美元,非官方的,因为我把头上的最后几缕头发都拔下来了