从.NET Framework传统项目引用.NET Standard csproj项目

6
我有一个针对.NET Standard 1.3编写的库,应该与.NET Framework 4.6.1运行时兼容。该库使用新的csproj,在引用.NET Core项目时可以正常工作。
我还有一个传统的csproj上的WPF项目,应该能够使用这个库。在Visual Studio 2017中,我成功地引用了.NET Standard库,并且它编译没有错误。
但在运行时,它尝试加载.NET Standard项目的依赖程序集,并因未找到程序集异常而失败。实际上,我可以看到我的输出文件夹确实没有任何依赖项。
是否有一种方式可以引用我的库,以便将所有必需的依赖项复制到输出文件夹(或等效解决方案,使WPF项目正常运行)?
注意:如果我逐个手动引用所有缺少的依赖项并使用运行时程序集版本绑定,我可以让它运行,但是当引用一个项目时,我不应该这样做。
这是完整的项目页面:https://github.com/UnoSD/PasswordManager .NET Standard csproj WPF package.config WPF csproj 目前存在一个Roslyn问题:GitHub问题

你能分享一下你的文件吗?包括 netstandard 和 WPF 项目。此外,你的 WPF 项目是否有 packages.config 文件?如果有,请也分享出来。 - natemcmaster
@natemcmaster 全部在 GitHub 上,我已经添加了链接。 - Stefano d'Antonio
@LexLi 这就是我正在做的事情,但我不应该手动添加依赖项。 - Stefano d'Antonio
@Stefanod'Antonio,“不应该”只是你的观点。遗憾的是,事实就是你必须这样做。 - Lex Li
@LexLi 我百分之百确定这不是设计上的问题。如果你认为是的话,请发布一个链接到说明文档。在.NET Standard之前,你从来没有必须这样做过,而且这样做对于所有引用来说都是荒谬的,最终你会得到一个引用了成千上万个包的项目。 - Stefano d'Antonio
显示剩余2条评论
2个回答

4

如果您使用“FileNotFoundException”关键字在 .NET Core 存储库中进行搜索,甚至会发现更多问题。因此,我认为这不是一个快速解决的问题。 - Lex Li
@LexLi 我发布了主要的和我的问题,其他的大多数都是关闭的重复。他们建议一个解决方法,但对我似乎不起作用。 - Stefano d'Antonio

2

您需要为.NET 4.6.1指定编译器输出。

请在您的.NET标准库项目的csproj中添加以下行。

<TargetFrameworks>netstandard1.4;net461</TargetFrameworks>

应该使用<TargetFramework>netstandard1.4</TargetFramework>代替。

构建将生成适用于.NET 4.6.1和.NET Core运行时的二进制文件,兼容NET Standard 1.4。


此外,我读到使用.NET Standard 的整个重点不是为了多目标,这不就是多目标吗? - Stefano d'Antonio
2
实际上,同时针对两者会导致某些类型冲突,进而无法编译。 - Stefano d'Antonio
有人解决了这个问题吗?我想在一个同时使用net461的项目中使用一个.net标准库。 - christopher clark
@christopherclark,有什么问题吗?您应该能够从.net461项目中引用.net标准。 - Jim Aho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接