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

时间:2013-12-02 13:21:37

标签: c# windows-phone-8 portable-class-library csproj

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

说,我现在正在考虑定位另一个.NET平台,例如Windows Store,但在创建我的类库时,我选择创建一个特定于平台的类库(例如我的WPCL),而不是一个可移植类库(PCL)。

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

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

基本上,我想知道是否,

有没有办法在不破坏csproj文件的情况下自动将特定于平台的类库转换为可移植类库?

3 个答案:

答案 0 :(得分:1)

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

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

使用以下内容替换import语句(通常在文档末尾):

<Import Project="$(MSBuildExtensionsPath)\Microsoft\WindowsXaml\v$(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。

该项目现在应该是一个引用Windows 8.1的可移植库 - 只需将其更改为您现在喜欢的任何内容。

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

答案 1 :(得分:1)

您可以使用following Visual Studio Extension自动执行此操作。

安装完成后,选择“工具&gt;将项目转换为PCL”,然后选择要转换的项目。

答案 2 :(得分:0)

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