【问题标题】:Is there any guidance on converting existing .NET class libraries to portable libraries?是否有关于将现有 .NET 类库转换为可移植库的指导?
【发布时间】:2012-07-01 04:23:01
【问题描述】:

我有一些包含大量现有代码的类库。类库当前面向 .NET 4.0。是否有关于如何将这些库转换为可移植库的指导?从 .csproj 看,似乎并没有很多差异:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

和

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

尝试将现有类库转换为可移植库是好主意还是坏主意?

【问题讨论】:

  • Igor Milovanović 有一个很好的视觉教程here。

标签: c# projects-and-solutions portability


【解决方案1】:

我们还将现有库转换为可移植库,并且运行良好。您必须修改项目文件。替换以下行:

<Import Project="..." />

与

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

在 PropertyGroup 标签内添加以下行

<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>

并从 AssemblyInfo.cs 文件中删除以下行

[assembly: ComVisible(false)]
[assembly: Guid("...")]

之后,Visual Studio 应该会在项目属性页中显示“库”标签页,您可以更改可移植库的目标框架。

【讨论】:

  • 刚刚编辑了几个项目(可能是较旧的项目文件版本),我还必须将&lt;TargetFrameworkVersion&gt; 和&lt;TargetFrameworkProfile&gt; 标记添加到PropertyGroup。使用 TFVersion -> 4.0 和 TFProfile -> 104 的值对我有用。
  • 更正:TargetFrameworkVersion 应该是v4.0(注意v)
  • WinPhone 8.1 是:Profile32v4.6
  • 我还需要在 下添加以下内容:v4.0Profile158
  • v4.5, Profile7 -> .NET 4.5+Win 8
【解决方案2】:

我创建了一个 Visual Studio 扩展来自动执行此操作。 只需在 Visual Studio > 2012 的 Extension 中搜索“convert to pcl”

源代码也可以在 Github 上找到。

【讨论】:

    【解决方案3】:

    您可以删除&lt;Import Project="..." /&gt; 行。然后,当您重新加载项目时,Visual Studio 将询问您要定位哪些框架。然后,您可以稍后在项目的属性中更改它。

    【讨论】:

    • 我认为这会很整洁,但不幸的是它不适合我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多