如何将PCL转换为.Net标准库

时间:2017-10-19 08:37:42

标签: c# .net portable-class-library .net-standard

所以我有一个PCL项目,但现在想更新它以支持.Net Standard

我已阅读Microsoft website steps来执行此操作:

  
      
  • 右键单击项目文件,然后选择“属性”。
  •   
  • 在Library下,选择Target .NET Platform Standard。
  •   

但最新版本的Visual Studio 2017中不存在此按钮。

我还阅读了here

  
      
  • 关闭VS中的解决方案
  •   
  • 获取现有的csproj并制作副本   它在别的地方。我会在记事本中打开另一个副本。
  •   
  • 复制/粘贴您创建的新项目的内容并替换   您现有项目的内容。大部分你在旧的东西   不再需要项目了。你可能需要的是什么   设置,如任何不匹配的签名或程序集名称   文件夹名称/约定。如果你有ResX文件的设计时间   生成的代码,您需要添加以下内容。同样,为   Xamarin表格页面,你需要这个。
  •   

但是我不明白上面突出显示的步骤,因为我有大量的nuget包和ResX文件因此在我尝试时总是会导致构建错误

那么有没有直接的步骤将PCL项目更新为.NetStandrard?

3 个答案:

答案 0 :(得分:1)

在我看来,最好的方法是从头开始创建一个新项目(.net标准)并将所有内容复制到那里...... 在这里你可以得到一些帮助:https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/

答案 1 :(得分:1)

我将PCL转换为.Net标准库所采取的步骤使用了here与我自己的一些步骤:

  1. 将所有nuget包从旧packages.config方式转换为PackageReference
  2.   

    不幸的是,目前没有迁移工具,因此卸载现有软件包可能最简单,确保packages.config文件已经消失,然后在将VS选项设置为PackageReference后安装软件包。你也可以手工完成(这是我为我的项目所做的)。

    1. 在项目中创建一个新的.Net Standard类库,调用它类似于MyPclProject1

    2. 将所有文件从旧PCL lib拖放到.Net Stanrdard lib

    3. 在记事本中打开旧的PCL .cs​​proj文件,并将所有PackageReference代码复制并粘贴到新的.Net Standard csproj文件中

    4. 如果您使用.resx文件,则需要将this code添加到.Net Standard .Csproj文件中(不确定原因)

    5. 然后将旧pcl文件中的所有引用更新为新的.Net标准文件并删除旧库

    6. 将新的.NEt标准库重命名为旧的pcl名称

答案 2 :(得分:0)

基于blog post from James Montemagno关于如何将可移植类库转换为.NET Standard并保留Git历史记录

  • 卸载PCL项目(​​右键单击->卸载),然后开始对其进行编辑(右键->单击“编辑”)
  • 删除csproj中的所有内容,并将其插入:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <TargetFramework>netstandard2.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
        <!--<PackageReference Include="" Version=""/>-->
      </ItemGroup>
    
    </Project>
    
  • 重新添加NuGets(只需打开packages.config,然后通过Nusum软件包管理器添加上面的软件包引用。

  • 删除AssemblyInfo.cs(现在在csproj中)和packages.config(也通过PackageReference在csproj中)

今天有很多指南(例如this one),但是它们基本上是相同的(除了某些特定于项目的特性。我读到的是,至少为此需要VS 2017。