NetFramework应用程序在同一解决方案中引用NetFramework库引用另一个解决方案中的NetStandard库:无法加载文件或程序集

ror*_*.ap 11 .net c# visual-studio visual-studio-2017 .net-standard

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

在此输入图像描述

存在许多源,如下所示,表明可以通过在netframework项目中添加缺少的依赖项来解决此问题:

然而,这是不利的,因为我不希望项目必须带有他们不应该要求的直接参考; 依赖项应该自然流动,以便将来添加/删除的依赖项正常工作.

其他来源表明可以通过添加<RestoreProjectStyle>PackageReference</RestoreProjectStyle><AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>netframework项目文件来解决:

我已经使用驻留在同一个Visual Studio解决方案中的项目测试了上述两个修复程序并取得了成功,但我更喜欢第二种方法,因为它是"设置并忘记它"的解决方案.

我发现的问题是当我尝试从另一个VS解决方案中的netframework项目引用netstandard类库时,我在后一个项目使用<RestoreProjectStyle>PackageReference</RestoreProjectStyle><AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>方法.在我的特定情况下,我有一个.NET Framework可执行项目,该项目在同一解决方案中引用.NET Framework类库,该类库在另一个解决方案中引用.NET Standard类库.

在GitHub上创建了一个MCVE来演示这种行为.我正在使用VS 2017 v15.9.4.

除了总是直接在netframework项目上添加软件包之外,有没有办法让它工作?


(注意:这听起来与此处的问题相似,但我没有使用"点击一次":https://stackoverflow.com/a/47839628/2704659)

Sim*_*ier 1

如果您在 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>
Run Code Online (Sandbox Code Playgroud)