Есть ли какие-либо рекомендации по преобразованию существующих библиотек классов .NET в переносимые библиотеки?

У меня есть библиотеки классов с нетривиальным количеством существующего кода. В настоящее время библиотеки классов предназначены для .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>

Является ли хорошей или плохой идеей попробовать преобразовать существующую библиотеку классов в переносимую библиотеку?

Ответ 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 должна показать вам вкладку "Библиотека" на странице свойств проекта, и вы можете изменить целевые рамки для переносимой библиотеки.

Ответ 2

Я создал расширение Visual Studio для его автоматизации. Просто выполните поиск в Visual Studio > 2012 в Extension для конвертировать в pcl"

Исходный код также доступен в Github.

Ответ 3

Вы можете удалить строку <Import Project="..." />. Затем, когда вы перезагружаете проект, Visual Studio спросит вас, какие рамки для таргетинга. Затем вы можете изменить это позже в свойствах проекта.