gpt4 book ai didi

c# - NetFramework 应用程序在同一解决方案中引用 NetFramework 库,在另一个解决方案中引用 NetStandard 库。 : could not load file or assembly

转载 作者:可可西里 更新时间:2023-11-01 08:49:34 26 4
gpt4 key购买 nike

关于从 .NET Framework 项目中引用 .NET Standard 类库的问题有很多类似的问题,其中 netstandard 库中的 NuGet 包依赖项不会流向 netframework 应用程序,并且 Could not load file or assembly运行时发生错误:

enter image description here

存在许多来源,例如下面的来源,表明可以通过添加对 netframework 项目缺少的依赖项来解决这个问题:

然而,这是不利的,因为我不想让项目必须携带它们不应该需要的直接引用;依赖关系应该自然流动,以便将来添加/删除的依赖关系正常工作。

其他来源表明可以通过添加<RestoreProjectStyle>PackageReference</RestoreProjectStyle>来解决。和 <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>到网络框架项目文件:

我已经使用驻留在同一 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com