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

标签 c# .net visual-studio visual-studio-2017 .net-standard

关于从 .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/

相关文章:

c# - 无法找到 Windows.ApplicationModel

c# - 如何将 ListBox 项绑定(bind)到用户控件?

c++ - 为什么 C++ 函数的命名标准不存在?

c++ - 避免包装器 DLL 中的堆栈溢出

c# - 无法在 VS 2017 15.5.7 中添加服务引用

c# - 访问注册表项被拒绝当我想更新值时

javascript - 从代码隐藏调用 .js 文件函数

c# - 创建基本用户控件

c# - 屏幕截图上的窗口没有消失

.net - Entity Framework 导航属性接口(interface)类型