Таможенный таргетинг на платформу 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 видеть пользовательскую структуру или что-то, что имеет тот же эффект? Что обычно включено в пакет таргетинга? Можно добавить пользовательские шаги сборки?
Ответы
Ответ 1
Я думаю, что Visual Studio сначала просматривает реестр, особенно в этом ключе: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework
(или HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework в 64-разрядных системах)
Вы найдете множество интересных подразделов, некоторые из которых фактически указывают на папки program files\referenced assemblies
.
Ответ 2
Как говорит Саймон, Visual Studio также использует реестр для загрузки компонентов.
Многие люди сделали то, что вы говорите, например попробуйте спросить http://www.springframework.net.
Для другой стороны, если вы просто хотите добавить свои собственные библиотеки в существующую Framework, ознакомьтесь с этой статьей http://msdn.microsoft.com/en-us/library/ee722096.aspx
Ответ 3
Ты на трассе. Проблема заключается в том, что диалог "Новый проект" имеет известное ограничение, в котором перечислены только платформы .NET Framework.
Windows Phone, Silverlight и Portable все реализуют это на стороне шаблона. В принципе, у них есть шаблон, который предварительно устанавливает свойство TargetFrameworkIdentifier MSBuild. Например, MyCustomFramework, где MyCustomFramework - это имя фреймворка в папке Microsoft\Framework.