【问题标题】:Enforcing files in a folder have build action = Embedded Resource with target files强制文件夹中的文件具有构建操作 = 带有目标文件的嵌入式资源
【发布时间】:2015-08-26 06:19:46
【问题描述】:

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>

此代码块检查文件是否设置为始终复制。如何检查构建操作?

也希望有一些链接可以进一步阅读有关该主题的内容。

提前致谢。

【问题讨论】:

    标签: visual-studio msbuild target


    【解决方案1】:

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

    <?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>
    

    如果您正在与忘记将其脚本设置为嵌入式资源的开发人员打交道,上述内容应该足够了(尽管并不全面),主要是因为 Visual Studio 默认将新文件的构建操作设置为 Content。如果你想让它防弹,只需重复 Error 标签并将 Content 替换为所有可能的构建操作(EmbeddedResource 除外)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-03
      相关资源
      最近更新 更多