使用相同的C#源构建具有完整.net、PCL和dotnet核心程序集的单一源项目?更新:这是指围绕project.json构建的一组过时的.net核心工具,这个问题及其答案在当前的.net核心工具集中(如VisualStudio2017+)的实用性非常有限。使用VisualStudio2015更新3,我试图找出当前存在的限制会阻止我执行以下操作:对于单个C#代码库,编译完整的.net框架版本和PCL版本以及来自相同的源代码核心类库。解决方案目录solutiondir将包含一个src目录,其中包含一个projectdir(Solutiondirsrcprojectdir)。Projectdir将包含作为经典.netPCL项目构建的HelloWorldPCL类库,以及其他框架目标。从相同的Projectdir,相同的HelloWorldPCL也将被编译为.net4.6项目。在同一个Projectdir中,同样的HelloWorldPCL也会被编译成.netcore。上面的所有输出程序集都将共享对一组C#代码的访问,这些代码可能有一些#ifDOTNET和#ifNET46以及#ifPCL条件定义来处理各种框架/环境中不可用的事情。到目前为止,我可以完成上述大部分工作,但是当我尝试让Projectdir包含.net核心工件(如project.json或HelloWorldCore.xproj)时,如果我尝试创建单独的.csproj和.xproj,IDE会给我附带很多错误。这些项目在同一个文件夹中,所以它看起来不像是正确的方法。当我在磁盘上拉入.xproj和project.json时,有一个工作的.csproj项目,但我们还没有将它们添加到解决方案本身,它们只是坐在磁盘上的RealProjectSources旁边,我得到一个Nuget包还原错误只能通过删除project.json文件来消除,所以显然项目目录中不可能有.csproj而且还有一个project.json文件夹。您必须在project.json模式(.net核心项目样式)和.csproj模式(经典C#项目样式)之间进行选择。我建立了一个“损坏的”代码库,它说不可能使用包含.csproj和project.json的文件夹,然后尝试在不打扰它们的情况下构建csproj和project.json项目:https://bitbucket.org/wpostma/helloworldcoreandpcl问题:有没有什么方法可以从一组C#源文件构建一个项目,其中包含完整的.net4.6程序集和本机.net核心类库,可能还有针对任何特定.net配置文件的PCL程序集?异议:您可以正确地问“难道您不应该只使用一个PCL并完成它,而忘记以完整的.net为目标或创建一个单独的.net核心类库dll吗?”。也许如果代码可以从单一来源构建一次,没有任何条件定义,没有任何功能差异,并且如果最低公分母PCL“netstandard”配置文件方法施加的约束足够,那么可以。但哪些情况甚至是不可能的?我们是否必须有一些复杂的构建过程,我们复制项目文件或移动源代码以实现针对多个.net配置文件nerdvana的单个.cs源文件?还是我忽略了其他一些解决方案?更新:当您使用project.json而不是使用.csproj构建它时,VisualStudioIDE可能会出现问题,您无法直接在解决方案中添加对类库的引用。但Jon指定的以下解决方案建议您构建项目,然后使用dotnetpack构建nuget包。如果你在这里查看我修改过的演示,你可以将pack.cmd文件包含在我用来打包nuget包的步骤中,然后在本地“发布”到我自己的个人使用文件(本地目录)nugetfeed。我会尝试一种纯粹的project.json方法。例如,这里有一个project.json文件,它将构建一个支持netstandard1.0、PCL配置文件328和.NET4.6的包-每个配置都定义了自己的符号,因此您可以有条件代码。{“版本”:“1.0.0”,“框架”:{“net46”:{“buildOptions”:{“定义”:[“NET46”]}},“netstandard1.0”:{“buildOptions”:{“定义”:[“核心”]},“依赖项”:{“NETStandard.Library”:“1.6.0”}},“.NETPortable,Version=v4.0,Profile=Profile328”:{“buildOptions”:{"define":["PCL"]},"frameworkAssemblies":{"mscorlib":"","System":"",}}}}然后使用dotnetpack创建一个nuget包。(在添加所有其他元数据等之后)您可以将xproj和csproj与不同的project.json文件一起使用。我发表了一篇关于您应该查看的主题的博客文章:http://stackify.com/using-both-xproj-and-csproj-with-net-core/基本上,您创建一个获取项目名称的csproj。project.json,然后创建xproj使用的project.json。似乎工作!以上就是C#学习教程:使用同一个C#源码构建一个拥有完整.net、PCL和dotnet核心程序集的单一源码项目?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
