可移植类库是.NET程序员装逼的必备良药,至于它有多牛逼,我也不知道,大家可以自己看一下 http://msdn.microsoft.com/en-us/library/vstudio/gg597391%28v=vs.110%29.aspx

但是万一你装逼的时候手一滑,建成了一个普通的Class Library肿么办?普通青年的做法是删掉再建一个,这当然是OK的。但是,作为文艺青年,我们可以继续装逼:自己动手把这个类库转换成Portable Class Library。

为了演示,我先建一个普通的.NET类库:AVeryNBClassLibrary

在这个项目的属性页里面,自然是看不到Portable Class Library的选项的。

接下来,在项目上点右键,选择Unload Project,然后再次右键选择Edit AVeryNBClassLibrary.csproj。细心的观众可能已经发现“Edit Project File”和“Convert To Portable Class Library”两个选项了,这个是我安装的插件自带的功能,大家可以当作没有看到。为了体现自己的逼格,我还是得手动去编辑项目文件(.csproj)。

然后,VS会打开这个非常牛逼的XML文件。在VS里,所有关于这个项目的配置都是通过这个xml文件管理的,也就是.csproj文件的本身。VS是如何知道Project的类型的?当然也是在这个xml里面。

我们找到“<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />”这行代码,位置应该在文件末尾附近。

把它替换成“<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

然后,定位到第一个“PropertyGroup”节点,把“<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>”加到里面。这个东西是为了显示项目的属性页。

然后,保存这个csproj文件。重新加载项目。

现在,再看看属性页,已经是Portable Class Library了。装逼完成。