【发布时间】:2019-11-12 06:18:53
【问题描述】:
我是许多开源 Nuget 包的作者,我希望我的 Nuget 包方便所有人使用,但配置 Visual Studio 以生成针对不同平台和架构的多个程序集似乎非常困难来自一组源代码。
其中一个主要困难是微软不会为它自己的 Nuget 包执行此操作,因此我的项目必须为我想要定位的每个框架引用不同版本的微软包。这反过来意味着我需要为每个平台使用不同的项目,这对于具有大量源文件的项目来说很尴尬。
我不禁觉得我错过了一些东西,因为很多人一定遇到同样的问题,很难想象经过这么多年的 Visual Studio 开发,这仍然如此困难。
任何人都可以推荐一种组织解决方案、项目、源文件等的模式,这样可以轻松编写一次代码并将其编译为针对 .Net 4.0、.Net 4.5、.Net Standard 1.0 等的多个 DLL。
【问题讨论】:
-
您可以使用条件引用。答案here 有一个很好的 .NET Core 项目示例。
-
这是相当广泛的,但是这个网站已经很好地涵盖了制作这样一个解决方案的各个“位”,例如对于包和 DLL 引用 stackoverflow.com/a/58192509/397817 ;对于条件编译stackoverflow.com/a/57031308/397817 - 这只是我从自己的答案中摘录的 2 个 :)
-
另一方面,它真的可以像this 一样简单。因此,它确实在很大程度上取决于我们没有信息的代码和其他细节。
-
我尝试了共享项目和
元素。总的来说,我认为 是可行的方法,但它涉及对项目文件进行大量手动编辑,这让我一直感到不舒服。我想现在 Visual Studio 对编辑项目文件有更好的支持,也许这更容易接受。
标签: c# visual-studio nuget cross-platform