Nuget 应用xdt时,是否可以获取当前解决方案的packages文件夹的位置?

Nuget 应用xdt时,是否可以获取当前解决方案的packages文件夹的位置?,nuget,nuget-package-restore,xdt-transform,Nuget,Nuget Package Restore,Xdt Transform,我想为visual studio扩展安装一个设计时插件(即在使用visual studio时运行,而不是在应用程序运行时运行)。这要求我使用指向包含扩展代码的dll的条目修改app.config。插件是通过nuget安装的,如果我将此dll添加到项目下的文件夹中,并在app.config.install.xdt中使用固定路径,则一切正常。但是,我希望xdt插入一个值,该值指向packages文件夹中的dll,它通过nuget安装在该文件夹中。我的问题是,项目的nuget文件夹的相对路径不是固定的

我想为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中可能吗?如果没有,那么在安装my nuget package时,是否有另一个选项可以正确地使用app.config?

XDT语法不允许使用替换令牌,例如您在示例中放置的令牌

我能想到的一个选项是修改init.ps1PowerShell脚本中的app.config.install.xdt文件,在NuGet应用xdt转换之前,将标记替换为实际值


有关init.ps1的更多信息,请参阅:

XDT语法不允许替换令牌,例如您在示例中放置的令牌

我能想到的一个选项是修改init.ps1PowerShell脚本中的app.config.install.xdt文件,在NuGet应用xdt转换之前,将标记替换为实际值


有关init.ps1的更多信息,请参阅:

我喜欢这个想法,谢谢。我会尝试一下,看看我能做些什么。我终于开始尝试了,即使我修改了app.config.install.xdt文件,但在应用时它似乎使用了未修改的版本。我的app.config已更改,但使用的是原始值,即使在从解决方案的packages文件夹中打开app.config.install.xdt文件时,它也包含我的新值。哦,看来我得改了。我喜欢这个主意,谢谢。我会尝试一下,看看我能做些什么。我终于开始尝试了,即使我修改了app.config.install.xdt文件,但在应用时它似乎使用了未修改的版本。我的app.config已更改,但使用的是原始值,即使在从解决方案的packages文件夹中打开app.config.install.xdt文件时,它也包含我的新值。哦,看来我得改了。