关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework 应用程序,并且 Could not load file or assembly
运行时发生错误:
存在许多来源,例如下面的来源,表明可以通过添加对 netframework 项目缺少的依赖项来解决这个问题:
然而,这是不利的,因为我不想让项目必须携带它们不应该需要的直接引用;依赖关系应该自然流动,以便将来添加/删除的依赖关系正常工作。
其他来源表明可以通过添加<RestoreProjectStyle>PackageReference</RestoreProjectStyle>
来解决。和 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
到网络框架项目文件:
- https://stackoverflow.com/a/53654690/2704659
- https://stackoverflow.com/a/53732075/2704659
- https://www.hanselman.com/blog/ReferencingNETStandardAssembliesFromBothNETCoreAndNETFramework.aspx
我已经使用驻留在同一 Visual Studio 解决方案中的项目测试了上述两个修复并取得了成功,但我更喜欢第二种方法,因为它是一种“设置好后不用管”的解决方案.
我发现的问题是,当我尝试从网络框架项目在另一个 VS 解决方案中引用网络标准类库时,我使用了 <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
和 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
后一个项目中的方法。在我的具体案例中,我有一个 .NET Framework 可执行项目,它在同一解决方案中引用 .NET Framework 类库,而该类库在另一个解决方案中引用 .NET Standard 类库。
我创建了 an MCVE on GitHub that demonstrates this behavior .我正在使用 VS 2017 v15.9.4。
除了总是直接在 netframework 项目上添加包之外,还有什么方法可以让它正常工作吗?
(注意:这听起来与这里的问题类似,但我没有使用“单击一次”:https://stackoverflow.com/a/47839628/2704659)
最佳答案
如果您在 app.config 中添加类似这样的内容(根据您的上下文调整版本和路径),则无需更改任何代码即可运行
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /><codeBase version="4.1.1.0"
href="C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.win32.registry\4.5.0\lib\net461\Microsoft.Win32.Registry.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
关于c# - NetFramework 应用程序在同一解决方案中引用 NetFramework 库,在另一个解决方案中引用 NetStandard 库。 : could not load file or assembly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54596430/