我想为visual studio扩展安装一个设计时插件(即在使用visual studio时运行,而不是在应用程序运行时运行)。这要求我使用指向包含扩展代码的dll的条目修改app.config。该插件是通过nuget安装的,如果我将这个dll添加到项目下的文件夹中,并在app.config.install.xdt中使用固定路径,那么一切正常。但是我想要的是xdt插入一个值,该值指向packages文件夹中的dll,它通过nuget安装。我的问题是nuget文件夹的相对路径不是固定的项目。每个项目可能位于不同的文件夹(解决方案文件夹内的几个文件夹),而不仅仅是解决方案文件夹的直接子项,因此我希望能够在我的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中吗?如果没有,当我的nuget包安装时,是否有另一个选项可以正确地使用app.config?
答案 0 :(得分:0)
XDT语法不允许替换令牌,例如您在示例中添加的令牌。
我能想到的一个选项是修改 init.ps1 PowerShell脚本中的 app.config.install.xdt 文件,替换实际的令牌NuGet应用XDT变换之前的值。
有关init.ps1的详细信息,请参阅:Creating and Publishing a Package