如何配置Visual Studio检测.ts文件变更触发构建及模板文件默认生成操作
.NET Core控制台模板中TS文件构建检查与默认生成操作配置
针对你在创建包含TypeScript文件的.NET Core控制台项目模板时遇到的两个问题,我来逐一给出解决方案:
1. 将所有*.ts文件纳入Visual Studio构建检查
你已经知道可以用<UpToDateCheckInput>指定单个文件,要覆盖所有现有及后续添加的.ts文件,只需要在项目的.csproj文件中使用通配符匹配所有目录下的.ts文件即可。结合你提到的关闭FastUpToDateCheck的配置,完整的配置如下:
<PropertyGroup> <!-- 关闭VS的快速最新检查,强制依赖MSBuild的规则判断 --> <DisableFastUpToDateCheck>True</DisableFastUpToDateCheck> </PropertyGroup> <ItemGroup> <!-- 匹配项目根目录及所有子目录下的.ts文件 --> <UpToDateCheckInput Include="**/*.ts" /> </ItemGroup>
这个配置会自动包含所有已存在的.ts文件,以及后续你添加到项目目录结构中的任何.ts文件——只要文件路径符合通配符规则,就会被纳入VS的构建检查,一旦文件变更就会触发项目重新编译。
2. 在模板中指定新增文件的默认生成操作
要让后续添加的特定.ts文件默认使用指定的生成操作(比如EmbeddedResource),有两种可靠的配置方式:
方式一:通过.csproj全局配置(推荐)
在模板的.csproj文件中使用Glob模式批量设置.ts文件的生成操作,这样所有现有及未来添加的.ts文件都会自动继承这个配置。示例代码如下:
<ItemGroup> <!-- 所有.ts文件默认设置为EmbeddedResource生成操作 --> <EmbeddedResource Include="**/*.ts" /> </ItemGroup>
如果你希望部分.ts文件例外,可以在后续添加<EmbeddedResource Remove="特定路径/文件.ts" />来覆盖全局规则。
方式二:通过项目模板的.vstemplate配置
如果你是在创建Visual Studio项目模板(.vstemplate文件),可以在模板定义中指定新增.ts文件时的默认生成操作,适合控制用户通过模板添加新项时的行为:
<TemplateContent> <Project File="YourTemplate.csproj" ReplaceParameters="true"> <!-- 模板自带的示例TS文件 --> <ProjectItem ReplaceParameters="true" TargetFileName="Scripts/main.ts">main.ts</ProjectItem> <!-- 定义新增.ts文件时的默认生成操作 --> <ProjectItem DefaultBuildAction="EmbeddedResource" TargetFileName="Scripts/$(SafeItemName).ts">Empty.ts</ProjectItem> </Project> </TemplateContent>
这种方式需要你准备一个空的Empty.ts作为模板项的占位,用户通过模板添加新的TS文件时,就会自动应用EmbeddedResource的生成操作。
内容的提问来源于stack exchange,提问作者user3083693
相关产品推荐
相关产品推荐

