C# 单元测试公共签名.NET核心/框架库
我有一个为.NET核心和.NET框架编译的NuGet包库项目。它也在使用新的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
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>