不同的构建操作在csproj中做了什么.即AdditionalFiles或Fakes

Hop*_*ppe 11 c# msbuild asp.net-web-api visual-studio-2015

不同的构建操作在Web API项目中做了什么(也可能适用于其他类型)?

我看到:无,编译,内容,嵌入式资源,AdditionalFiles,CodeAnalysisDictionary,ApplicationDefinition,Page,Resource,SplashScreen,DesignData,DesignDataWithDesignTimeCreatableTypes,EntityDeploy,XamlAppDef,Fakes

我在StackOverflow上发现了类似的问题,但它们没有链接到任何Microsoft文档或包含所有项目.即,AdditionalFiles或Fakes做什么?

"Visual Studio项目属性中的各种"构建操作"设置是什么?它们做了什么?" 有一个不完整的清单.

是的,我确实看过,在文档中找不到它.

jes*_*ing 6

没有关于这些属性的集中文档。原因是这个列表是可扩展的,每个 Visual Studio 项目类型都可以提供它自己的。这也意味着下拉列表的内容会根据您安装的 Visual Studio 负载、扩展、您使用的编程语言等而变化。

这是如何扩展代码分析的示例:

<!-- Make AdditionalFiles and CodeAnalysisDictionary available as a Build Action in Visual Studio -->
<ItemGroup>
  <AvailableItemName Include="AdditionalFiles" />
  <AvailableItemName Include="CodeAnalysisDictionary" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

其他的可以通过抓取 MsBuild 目标文件夹找到,每个都通过文件中的AvailableItemName项目注册.target

  • 没有任何,
  • Compile - 将文件传递给属于项目类型的编译器
  • 内容 - 将文件标记为内容并可选择将它们复制到输出目录
  • 嵌入资源 - 用于将内容作为资源嵌入到组件中
  • AdditionalFiles - 由代码分析功能使用。在 Microsoft.CodeAnalysis.Targets 中定义
  • CodeAnalysisDictionary - 由代码分析功能、FxCop 和 Roslyn 使用。在 Microsoft.CodeAnalysis.Targets 中定义
  • ApplicationDefinition - 在 Microsoft.Winfx.targets 中定义
  • 页面 - 在 Microsoft.Winfx.targets 中定义
  • 资源 - 在 Microsoft.Winfx.targets 中定义
  • SplashScreen - 在 Microsoft.Winfx.targets 中定义
  • DesignData - 在 Microsoft.Winfx.targets 中定义
  • DesignDataWithDesignTimeCreatableTypes - 在 Microsoft.Winfx.targets 中定义
  • EntityDeploy - 在 Microsoft.Data.Entity.targets 中定义
  • XamlAppDef - 在 Microsoft.Winfx.targets 和 Microsoft.Xaml.targets 中定义
  • Fakes - 由 Fakes 框架(Visual Studio Enterprise 的一部分)使用。一个允许编写可以绕过静态、内部和私有 API 的测试的框架。

我的系统在您发布的那些之上还有一些额外的。您需要搜索每种项目类型的文档以了解其含义。根据他们的来源,您可能需要查看 3rd 方系统的文档。

MsBuild 的可扩展性使其成为一个非常强大的系统,同时有时它使弄清楚事情为什么是这样的事情变得噩梦般。我一直坚持推理:“如果我不知道这意味着什么,我可能就不需要它了……”。