Visual studio 强制文件夹中的文件具有build action=Embedded Resource和目标文件

Visual studio 强制文件夹中的文件具有build action=Embedded Resource和目标文件,visual-studio,msbuild,target,Visual Studio,Msbuild,Target,Visual Studio项目有一个包含sql脚本的文件夹,其中的所有文件都必须将生成操作设置为Embedded Resource。在添加新文件时,开发人员经常忘记更改构建操作 我想创建一个目标文件,如果文件夹中的任何文件没有正确的生成操作,该文件将在编译时抛出错误 我以前见过类似的事情 <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="12.0" DefaultTargets="Bu

Visual Studio项目有一个包含sql脚本的文件夹,其中的所有文件都必须将生成操作设置为Embedded Resource。在添加新文件时,开发人员经常忘记更改构建操作

我想创建一个目标文件,如果文件夹中的任何文件没有正确的生成操作,该文件将在编译时抛出错误

我以前见过类似的事情

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" 
         DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="MakeSureSqlFilesAreSetToCopyAlways" BeforeTargets="PrepareForBuild">
    <Error Condition="!('%(Content.CopyToOutputDirectory)' == 'Always')" 
           Text="This Content file is not configured to Copy Always: [%(Content.FullPath)]" />
  </Target>
</Project>

这段代码检查文件是否设置为“始终复制”。如何检查生成操作

如果您能提供一些关于这个主题的进一步阅读链接,我们将不胜感激


提前谢谢

假设脚本文件位于名为
脚本
的文件夹中,如果有任何文件的生成操作设置为
内容
,并且其路径包含单词
脚本
,则以下目标文件将引发错误

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" 
         DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Target Name="MakeSureSqlFilesAreSetToEmbeddedAsResource" BeforeTargets="PrepareForBuild">
    <Error Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('%(Content.FullPath)', 'Scripts'))" 
           Text="This Content file is not configured as Embedded Resource: [%(Content.FullPath)]" />
  </Target>
</Project>

如果您遇到的开发人员忘记将脚本设置为嵌入式资源,那么上面的内容就足够了(虽然不全面),主要是因为VisualStudio默认情况下将新文件的生成操作设置为
Content
。如果要使其防弹,只需重复
错误
标记,并用所有可能的生成操作替换
内容
(除了
嵌入式资源