如何排除Microsoft.NETCore.APP

时间:2019-05-24 16:39:30

标签: c# .net-core csproj packagereference

如何排除Microsoft.NETCore.App的依赖项,以便可以将其替换为本地编译的(错误修正)版本。

我通过制作具有更高版本号的软件包来执行替换软件包的正常过程,并尝试进行编译。该版本试图链接到两者,并由于重复引用而在CS0433的编译步骤中死亡。

<Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
       <OutputType>Exe</OutputType>
       <TargetFramework>netcoreapp2.1</TargetFramework>
   </PropertyGroup>

   <ItemGroup>
       <ProjectReference Include="..\System.Threading.ThreadPool\System.Threading.ThreadPool.csproj"/>
       <ProjectReference Update="..\System.Threading.ThreadPool\System.Threading.ThreadPool.csproj"/>
   </ItemGroup>
</Project>

编译错误:

  

C:\ Program FFiles \ dotnet \ sdk \ 2.1.604 \ Microsoft.Common.CurrentVersion.targets(2114,5):警告MSB3243:无法解决“ System.Threading.ThreadPool版本= 5.0之间的冲突。 0.0,文化=中性,PublicKeyToken =空”和“ System.Threading.ThreadPool,版本= 4.1.1.0,文化=中性,PublicKeyTokn = b03f5f7f11d50a3a”。任意选择“ System.Threading.ThreadPool,版本= 5.0.0.0,区域性=中性,PublicKeyToken =空”。 [路径]

     

Program.cs(17,13):错误CS0433:类型'ThreadPool'同时存在于'System.Threading.ThreadPool,版本= 4.1.1.0,区域性=中立,PublicKeyToken = b03f5f7f11d50a3a'和'System.Threading中。 ThreadPool,版本= 5.0.0.0,文化=中性,PublicKeyToken =空'[路径]

1 个答案:

答案 0 :(得分:1)

我假设您编译了corefx来生成更新的System.Threading.ThreadPool包?

在这种情况下,corefx has docs说明了如何执行此操作。总结一下:

  1. 使用您的修复程序构建corefx

  2. 获取所构建的corefx的版本号

  3. 使用第2步中的版本将PackageReference添加到Microsoft.Private.CoreFx.NETCoreApp

  4. 添加一个nuget.config,它指向您所构建的corefx的bin目录。

  5. 还原并发布您的项目,以选择修改后的corefx。