2016-06-06 9 views
0

Я хочу установить плагин времени разработки для визуального расширения студии (т. Е. Работает при использовании визуальной студии, а не когда приложение работает). Это требует, чтобы я изменял app.config с записью, указывающей на DLL, содержащую код расширения. Плагин устанавливается через nuget, и если я добавлю эту dll в папку под проектом и использую фиксированный путь в app.config.install.xdt, тогда все будет работать нормально. Однако я хочу, чтобы xdt вставлял значение, указывающее на dll в папке пакетов, где оно устанавливается через nuget. Моя проблема в том, что относительный путь к папке nuget не фиксирован для проектов. Каждый проект может находиться в другой папке (несколько папок глубоко внутри папки решений), а не только в прямом дочерней папке решения, поэтому я хочу иметь возможность использовать некоторую переменную в моем xdt.Могу ли я найти папку пакетов для текущего решения при применении xdt?

В настоящее время у меня есть это в моем XDT:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <specFlow> 
    <plugins xdt:Transform="InsertIfMissing"> 
     <add name="NCrunch.Generator" path=".\SpecflowPlugins\" type="Generator" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/> 
    </plugins> 
    </specFlow> 
</configuration> 

, но я хочу что-то вроде этого:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <specFlow> 
    <plugins xdt:Transform="InsertIfMissing"> 
     <add name="NCrunch.Generator" path="$(SolutionDir)\packages\Specflow.Ncrunch.1.0.0\lib\net" type="Generator" xdt:Transform="InsertIfMissing" xdt:Locator="Match(name)"/> 
    </plugins> 
    </specFlow> 
</configuration> 

это возможно в XDT? если нет, есть ли еще один способ получить это, чтобы правильно настроить app.config при установке пакета nuget?

ответ

0

Синтаксис XDT не позволяет заменить токены, такие как тот, который вы положили в свой пример.

Один из вариантов я могу думать о том, чтобы изменить app.config.install.xdt файл в сценарии PowerShell init.ps1, заменив маркеры для фактических значений до XDT преобразование применяется NuGet ,

Для получения дополнительной информации о init.ps1 см: Creating and Publishing a Package

+0

Мне нравится эта идея, спасибо. Я попробую и посмотрю, что я могу сделать. –

+0

Я, наконец, добрался до этого, и даже если я изменю файл app.config.install.xdt, похоже, он использует неизмененную версию, когда она применяется. Мой app.config изменен, но, используя исходные значения, даже когда я открываю файл app.config.install.xdt из папки пакетов для решения, он содержит мои новые значения. Ну, похоже, мне нужно [изменить его в install.ps1] (http://stackoverflow.com/a/8449741/97614). –