Разные NuGet Web.Config.Transforms для разных версий MVC - PullRequest
3 голосов
/ 03 июля 2011

Я создаю пакет nuget, который я хочу совместить как с приложениями MVC2, так и с приложениями MVC3 (все в .net 4.0).

Проблема в том, что я хочу добавить несколько пространств имен в файл web.config (например, так):

<pages>
  <namespaces>
    <add namespace="NewPackage.Web" />
  </namespaces>
</pages>

Но для бритвы мне пришлось бы вставить его как таковой:

<system.web.webPages.razor>
    <pages>
        <namespaces>
            <add namespace="NewPackage.Web" />
        </namespaces>
    </pages>
</system.web.webPages.razor>

Но, конечно, это не сработает для MVC2.Так что я надеялся на какой-нибудь способ условно запустить web.config.transform, только если обнаружен mvc3.Я понимаю, что на самом деле у nuget нет возможности сделать это, но мне было интересно узнать о powershell.Я знаю, что вы можете создать файл install.ps1, и я знаю, что он может обнаружить ссылки проекта, но может ли он определить номер справочной версии и затем запустить web.config.transform?Есть ли лучший способ?

Я знаю, что мог бы создать новый пакет, следуя шаблону, подобному NewPackage.Mvc3, как я видел, как это делают другие, но это не кажется очевидным для пользователя, устанавливающего его, и я хочу только немного другого web.config.transform так что это мой запасной вариант.

1 Ответ

3 голосов
/ 03 июля 2011

Я не верю, что ваше описание возможно при использовании поддержки преобразования по умолчанию. Возможно, вы сможете вызвать функцию преобразования непосредственно из сценария установки powershell, в противном случае вам придется внести изменения вручную (и откатить их в сценарии удаления).

...