2016-06-06 1 views
0

비주얼 스튜디오 확장을위한 디자인 타임 플러그인을 설치하고 싶습니다 (예 : 비주얼 스튜디오를 사용할 때 실행되고, 응용 프로그램이 실행 중일 때 실행되지 않습니다). 이 경우 확장 코드가 들어있는 dll을 가리키는 항목으로 app.config를 수정해야합니다. 플러그인은 nuget을 통해 설치되며이 dll을 프로젝트 아래의 폴더에 추가하고 app.config.install.xdt의 고정 경로를 사용하면 모든 작업이 정상적으로 작동합니다. 그러나 내가 원하는 것은 xdt가 nuget을 통해 설치된 패키지 폴더의 dll을 가리키는 값을 삽입하는 것입니다. 내 문제는 프로젝트의 너겟 폴더에 대한 상대 경로가 고정되어 있지 않다는 것입니다. 각 프로젝트는 솔루션 폴더의 직접 하위가 아닌 다른 폴더 (솔루션 폴더 내부 깊숙한 여러 폴더)에있을 수 있으므로 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> 

하지만 난 이런 걸 원하는 :

현재 내 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="$(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를 올바르게 munge하는 다른 옵션이 있습니까?

답변

0

XDT 구문은 사용자가 넣은 것과 같은 대체 토큰을 허용하지 않습니다. XDT는 NuGet에 의해 적용되는 변환하기 전에 내가 생각할 수있는

하나의 옵션은 실제 값에 대한 토큰을 대체하여 init.ps1 PowerShell 스크립트에서 app.config.install.xdt 파일을 수정하는 것입니다 .

볼 init.ps1에 대한 자세한 내용은 : Creating and Publishing a Package

+0

나는, 덕분에 그 아이디어를 좋아한다. 나는 그것을 시도하고 내가 할 수있는 것을 보게 될 것이다. –

+0

필자는 마침내이 작업을 시도해 보았습니다. app.config.install.xdt 파일을 수정하더라도 수정되지 않은 버전이 적용된 것처럼 보입니다. 내 app.config가 변경되었지만 원래 값을 사용하여 솔루션의 packages 폴더에서 app.config.install.xdt 파일을 열 때 새 값이 포함되어 있습니다. 오, 잘 install.ps1 (http://stackoverflow.com/a/8449741/97614)에서 수정해야 할 것 같습니다. –

관련 문제