Индивидуальный таргетинг фреймворка в Visual Studio 2010
Я хочу дать разработчикам, использующим Visual Studio, возможность писать программы на основе пользовательских платформ, которые заменяют.NET (аналогично платформам Windows Phone и Silverlight, которые не являются подмножествами или профилями существующей фреймворк), и имеют полную поддержку IntelliSense и все,
Visual Studio 2010 поддерживает многоцелевой таргетинг, где вы можете настроить таргетинг на любую инфраструктуру (например,.NET, Silverlight, Robotics, XNA, Windows Phone и Mono), если у вас установлены соответствующие пакеты таргетинга.
Я обнаружил, что фреймворки обычно имеют некоторые ссылочные сборки, которые они помещают в %programfiles%\Reference Assemblies\Microsoft\Framework
вместе с FrameworkList.xml
файл в RedistList
вложенная папка. Я пытался просто создать новую папку, положить свои сборки (например, MyFramework.dll
) вместе с подпапкой RedistList, содержащей файл FrameworkList.xml. Я очистил файл, но для одной записи для аналогичных:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FileList Redist="MyFramework_1_0">
<File AssemblyName="MyFramework" Version="1.0.0.0"
PublicKeyToken="be3ea0d08db41157" Culture="neutral"
ProcessorArchitecture="MSIL" InGAC="false" />
</FileList>
Но Visual Studio не перечисляет мои фреймворки в списке доступных фреймворков при создании нового проекта (после перезапуска VS). Очевидно, я что-то упустил, но я не смог понять, что.
Как создать такой пакет таргетинга, который позволит Visual Studio видеть пользовательскую платформу или что-то подобное? Что обычно входит в пакет таргетинга? Можно ли добавить пользовательские этапы сборки?
3 ответа
Я думаю, что Visual Studio сначала просматривает реестр, особенно в этом ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
(или HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework в 64-разрядных системах)
Вы найдете множество интересных подразделов, некоторые из которых на самом деле указывают на program files\referenced assemblies
папки.
Как говорит Саймон, Visual Studio также использует реестр для загрузки компонентов.
Многие люди сделали то, что вы говорите, например, попробуйте спросить http://www.springframework.net/.
С другой стороны, если вы просто хотите добавить свои собственные библиотеки в существующую платформу, ознакомьтесь с этой статьей http://msdn.microsoft.com/en-us/library/ee722096.aspx
Вы на трассе. Проблема в том, что у диалогового окна "Новый проект" есть известное ограничение, в котором перечислены только платформы на основе.NET Framework.
Windows Phone, Silverlight и Portable все реализуют это на стороне шаблона. По сути, у них есть шаблон, который предварительно устанавливает свойство TargetFrameworkIdentifier MSBuild. Например, MyCustomFramework, где MyCustomFramework - это имя платформы в папке Microsoft\Framework.