从PCL迁移到.netstandard

时间:2018-07-11 07:02:54

标签: c# visual-studio-2017 nuget .net-standard nuget-spec

我正在尝试找出如何将项目从PCL迁移到.netstandard 1.2。

我有一个解决方案,其中有一个PCL项目(portable45-net45 + win8 + wpa81)和一个.net标准的(netstandard1.2)项目它会将文件链接到到PCL项目中。

当前,我们使用nuspec文件从PCL项目创建nuget包。 现在,以1个nuget包同时提供这两种方法的最佳方法是什么? 我发现nuget packdotnet pack的使用以及将多个框架和项目类型(csproj)混合使用非常令人困惑。

似乎还为VS2017 +项目提供了一种新的csproj格式,我应该转换PCL项目吗?

最终,该nuget只应包含.netstandard1.2项目,但我们希望在迁移过程中同时使用这两个依赖关系树。

1 个答案:

答案 0 :(得分:1)

  

在1个nuget包中同时提供这两种方法的最佳方法是什么?

您仍然可以使用.nuspec文件来完成此操作,只需要将PCL项目和.Net Standard项目中的dll文件包含到不同的框架中即可。

以下是我的测试.nuspec文件,您可以检查其详细信息:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>My.Package</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
    <files>
       <file src="TestPCL\bin\Debug\TestPCL.dll" target="lib\portable-net45+wp8\" />
       <file src="TestStandard\bin\Debug\netstandard1.2\TestStandard.dll" target="lib\netstandard1.2\" />
    </files>
</package>

将此软件包安装到PCL项目和.Net Standard项目时,nuget会在项目的相应框架下选择DLL文件。