将类库(例如WP8、Windows应用商店)转换为可移植类库



比如说,我创建并扩展了一个Windows Phone类库(WPCL)项目或任何其他针对特定平台的类库项目。

比方说,我现在正在考虑瞄准另一个。NET平台,例如Windows应用商店,但在创建类库时,我选择创建特定于平台的类库(如WPCL),而不是可移植类库(PCL)。

编写的源代码是可移植的,它只需要一个PCL项目文件(csproj)。

从WPCL和PCL-csproj的比较来看,似乎只有几个属性不同。但是我需要破解csproj才能完成工作吗?

基本上,我想知道是否,

有没有一种方法可以自动将特定于平台的类库转换为可移植类库,而无需破解csproj文件

我知道你在寻求一种非黑客的方式,但由于它很简单,我还是发布了解决方案:http://geekswithblogs.net/imilovanovic/archive/2012/08/31/vs2012---how-to-manually-convert-.net-class-library-to.aspx

这工作得很好,但它似乎不再适用于VS2013(它不显示更改目标对话框,只显示一个包含所有可能组合的下拉框)。我玩了一点,想出了如何将csproj更改为针对Windows 8.1的可移植库。我不知道是否有任何副作用(老实说,我不知道我到底在做什么),但至少我看不出转换后的和原始的可移植libs之间有什么区别,一切都编译得很好。

将导入声明(通常在文档末尾)替换为以下内容:

<Import Project="$(MSBuildExtensionsPath)MicrosoftWindowsXamlv$(VisualStudioVersion)Microsoft.Windows.UI.Xaml.CSharp.targets" />

将以下标记添加到第一个属性组

<ProjectTypeGuids>{BC8A1FFA-BEE3-4634-8014-F334798102B3};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetPlatformIdentifier>Windows</TargetPlatformIdentifier>
<TargetPlatformVersion>8.1</TargetPlatformVersion>

并最终移除TargetFrameworkTag。

该项目现在应该是一个引用Windows8.1的可移植库——现在只需将其更改为您喜欢的任何内容即可。

注意:我没有尝试,但我想这只适用于VS2013(对于2012,请使用上面的链接)。

您可以使用以下Visual Studio扩展自动执行此操作。

安装后,选择"工具>将项目转换为PCL",然后选择要转换的项目。

不,目前还没有办法做到这一点。如果你的代码是完全可移植的,我建议切换到PCL。我认为最好的方法是在同一文件夹中创建一个新的PCL项目,编辑portable.csproj并从特定于平台的项目文件中复制项目,然后删除特定于平台项目并将可移植项目重命名为与旧特定于平台文件相同的名称。

最新更新