C# 单元测试公共签名.NET核心/框架库

C# 单元测试公共签名.NET核心/框架库,c#,.net,.net-core,xunit,strongname,C#,.net,.net Core,Xunit,Strongname,我有一个为.NET核心和.NET框架编译的NuGet包库项目。它也在使用新的 netstandard2.0;网络472 真的 ../../Key.snk 真的 我有一个xUnit测试项目,使用它还可以交叉编译到.NETCore和.NETFramework <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup Label="Build"> <TargetFrameworks>netcoreapp3.1

我有一个为.NET核心和.NET框架编译的NuGet包库项目。它也在使用新的


netstandard2.0;网络472
真的
../../Key.snk
真的
我有一个xUnit测试项目,使用它还可以交叉编译到.NETCore和.NETFramework

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

  <PropertyGroup Label="Build">
    <TargetFrameworks>netcoreapp3.1;net472</TargetFrameworks>
  </PropertyGroup>

  <ItemGroup Label="Package References">
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1" />
  </ItemGroup>

  <ItemGroup Label="Project References">
    <ProjectReference Include="..\..\Source\Foo\Foo.csproj" />
  </ItemGroup>

</Project>

netcoreapp3.1;网络472
当我在此项目中运行测试时,.NET核心测试运行成功,但.NET Framework测试运行失败,原因是:

System.IO.FileLoadException:无法加载文件或程序集“Foo,版本=0.0.1.0,区域性=中性,PublicKeyToken=fc5550082a9c642c”或其依赖项之一。无法验证强名称签名。程序集可能已被篡改,或者已延迟签名但未使用正确的私钥完全签名。(来自HRESULT的异常:0x80131045)

我怎样才能让它们都工作?

使用

<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">True</PublicSign>
True
参考文献


您可能想看看。很可能您的某个库的版本更高。如何正确地对程序集进行签名?至少对于.NET Framework,您可以在msbuild项目中使用ifdef对程序集进行完全签名。正如文档所述,“您将无法在启用卷影复制的AppDomain中加载程序集。”xunit使用该程序集(请参阅denied PR)。看起来我可以删除
,因为现在跨平台实现了正确的签名。
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">True</PublicSign>