我有一个类库“CoreComponents”,手动添加了引用“WindowsBase.dll”。
在类库中,我添加了一些使用“WindowsBase.dll”中某些类的方法。
然后,我新建了一个Nunit项目想要测试这些方法。我已经添加了项目引用,但是当我单击调试并单步进入该方法时,显示错误:
System.IO.FileNotFoundException:无法加载文件或程序集“WindowsBase,版本= 6.0.2.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”。系统找不到指定的文件。
根据上面的描述,我想也许我需要添加对Nunit的引用,所以我这样做了
不幸的是,出现了另一个错误:
System.BadImageFormatException:无法加载文件或程序集“WindowsBase,版本= 6.0.2.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”。不应加载参考程序集来执行。它们只能在仅反射加载器上下文中加载。 (0x80131058) System.BadImageFormatException:无法加载参考程序集以供执行。
目标框架是.Net6,classlib和NunitPrj,“WindowsBase.dll”也从.Net6 WinDeskApp.Ref复制。
出现这个错误,我不知道该怎么办。 我在谷歌上搜索了一些答案,例如删除“bin”文件夹,但不起作用。
这里有解决办法吗?还是我操作中做错了什么?
//------------------------------------------------------------ -------------------
我已将目标框架更改为“Net6-windows”,但问题仍然存在。
coreComponent csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Web.WebView2" Version="1.0.1823.32" />
</ItemGroup>
<ItemGroup>
<Reference Include="WindowsBase">
<HintPath>lib\WindowsBase.dll</HintPath>
</Reference>
</ItemGroup>
</Project>
NUnitPrj csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
<PackageReference Include="NUnit.Analyzers" Version="3.6.1" />
<PackageReference Include="coverlet.collector" Version="3.2.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\CoreComponents\CoreComponents.csproj" />
</ItemGroup>
</Project>
在项目上您应该有标签