[英]Visual studio project template replaces “$(SolutionDir)” macro in template on build
我正在嘗試制作一個內部使用的項目模板,該模板包含我們程序集版本控制系統的所有自定義部分。
默認項目模板與我們的構建前和構建后事件完美配合,但是當我嘗試使用$(SolutionDir)
宏引用文件時,它將在構建模板時被替換,並且
<ItemGroup>
<Compile Include="$(SolutionDir)\CommonAssemblyInfo.cs">
<Link>Properties\CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
當使用項目模板在解決方案中生成項目時,將變成以下內容:
<ItemGroup>
<Compile Include="..\..\..\..\..\Users\<username>\AppData\Local\Temp\n0u03z2x.gpe\CommonAssemblyInfo.cs">
<Link>Properties\CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
模板build/package
過程可能正在取代它。
我該如何逃脫呢?
Visual Studio項目模板在構建時替換模板中的“ $(SolutionDir)”宏
您應該將導出的項目模板的.vstemplate
文件中的CreateInPlace設置為true ,例如<CreateInPlace>true</CreateInPlace>
。
以下是我的.vstemplate
文件:
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project">
<TemplateData>
<Name>TestDemo</Name>
<Description><No description available></Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>TestDemo</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<Icon>__TemplateIcon.ico</Icon>
<CreateInPlace>true</CreateInPlace>
</TemplateData>
<TemplateContent>
<Project TargetFileName="TestDemo.csproj" File="TestDemo.csproj" ReplaceParameters="true">
<ProjectItem ReplaceParameters="true" TargetFileName="Class1.cs">Class1.cs</ProjectItem>
<Folder Name="Properties" TargetFolderName="Properties">
<ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem>
</Folder>
</Project>
</TemplateContent>
</VSTemplate>
詳細步驟:
解壓縮導出的文件,將<CreateInPlace>true</CreateInPlace>
到MyTemplate.vstemplate
文件中,然后壓縮所有文件。
將此文件復制到以下文件夾: C:\\Users\\<Username>\\Documents\\Visual Studio 2017\\Templates\\ProjectTemplates
重新啟動Visual Studio,使用新的自定義模板創建一個新項目。
使用此設置,此問題應得到解決。 但是奇怪的是,文檔指出CreateInPlace
的默認值為true。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.