我正在Visual Studio 2019中创建一些模板,以使用新的.csproj格式(基于SDK属性),我遇到了一个问题。
通常,如果您要在模板中包含档案,请将它加入.vstemplate中:
<TemplateContent>
<Project File="ProjectTemplate.csproj" ReplaceParameters="true">
<ProjectItem ReplaceParameters="true" TargetFileName="$classprefix$Config.cs">ProjectTemplateConfig.cs</ProjectItem>
</Project>
</TemplateContent>
和.csproj中:
<ItemGroup>
<Compile Include="$classprefix$Config.cs" />
</ItemGroup>
而且一切都按它应该的方式工作。
然而,我尝试使用新的格式,其中你不不包括个别文件在.csproj,它会自动拿起所有文件在您的项目文件夹。
但是,当我从csproj中删除<Compile>
标记时,模板不再复制文件。
我甚至使用了IWizard
,我可以看到Visual Studio对IWizard.ShouldAddProjectItem(string)
的调用,我返回了true
,但是它没有添加它。
在使用WPF时,这种需求更为极端,因为如果添加第二个<Page>
标记,编译器实际上将抛出错误。
Visual Studio模板是否支持新的.csproj格式?如果支持,如何让它复制文件而不管它们是否存在于.csproj文件中?
2条答案
按热度按时间tsm1rwdh1#
Visual Studio模板是否支持新的.csproj格式?如果支持,如何让它复制文件而不管它们是否存在于.csproj文件中?
事实上,VS目前不支持为新的sdk格式项目创建项目模板。
实际上VS 2019只有
Net Framework
工程模板,用于创建旧sdk格式的工程,如果像您的情况一样,简单地将此类工程中的xxxx.csproj
文件修改为新sdk格式,但模板工程本身的框架仍然是net framework
(simply migrating the old sdk format to the new sdk format still has various compatibility issues
),因此,最终的模板仍然适用于net framework项目,而不是net core/net standard
项目。作为建议,
我建议你可以创建一个新的sdk格式的项目,做一些需求的变化,因为你想要的,然后使用VS UI选项Export Project Template导出这样的新sdk格式的项目,我认为这将工作得很好。
另外,如果您还想创建适用于新sdk格式项目的项目模板,我们建议您可以在our User Voice forum(DC)----
suggest a feature
中发布功能请求来分享您的想法,团队将认真考虑您的想法并给予您一个满意的答复。a14dhokn2#
我在Visual Studio 2022中得到了这个工作。
我将
<CreateInPlace>true</CreateInPlace>
添加到vstemplate文件,然后即使设置<EnableDefaultCompileItems>true</EnableDefaultCompileItems>
(默认为true),也会复制所有文件