c# - 不同的构建操作在 csproj 中做了什么。 IE。附加文件或假货

标签 c# asp.net-web-api visual-studio-2015 msbuild

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

我看到:无、编译、内容、嵌入式资源、AdditionalFiles、CodeAnalysisDictionary、ApplicationDefinition、页面、资源、SplashScreen、DesignData、DesignDataWithDesignTimeCreatableTypes、EntityDeploy、XamlAppDef、Fakes

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

"What are the various “Build action” settings in Visual Studio project properties and what do they do?"有一个不完整的列表。

是的,我确实看过,但在文档中找不到。

最佳答案

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

这是一个如何扩展代码分析的例子:

<!-- Make AdditionalFiles and CodeAnalysisDictionary available as a Build Action in Visual Studio -->
<ItemGroup>
  <AvailableItemName Include="AdditionalFiles" />
  <AvailableItemName Include="CodeAnalysisDictionary" />
</ItemGroup>

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

  • 没有,
  • 编译 - 将文件传递给属于项目类型的编译器
  • 内容 - 将文件标记为内容并可选择将它们复制到输出目录
  • 嵌入式资源 - 用于将内容作为资源嵌入到组件中
  • 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 的一部分)使用。一个允许编写可以绕过静态、内部和私有(private) API 的测试的框架。

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

MsBuild 的可扩展性使其成为一个非常强大的系统,与此同时,它有时也让弄清楚事情为什么会变成现在这样成为噩梦。我一直坚持这样的推理:“如果我不知道它是什么意思,我可能就不需要它......”。

关于c# - 不同的构建操作在 csproj 中做了什么。 IE。附加文件或假货,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40029629/

相关文章:

ssl - Visual Studio 2015。无法为站点访问注册 URL 被拒绝 IIS Express。访问被拒绝 0x80070005

c# - ASP.NET Web API 与 ninject 绑定(bind)

c# - 参数未从 $http.post 传递到 api Controller

visual-studio-2015 - 构建Visual Studio安装/部署项目要求安装集成的2010 Shell

c++ - 在 Visual Studio、CodeBlocks 和 Eclipse 中使用 C++ 编译/运行问题?

c# - json.net 将字符串反序列化为嵌套类

c# - 为什么要在 RabbitMQ 中声明 Exchange?

asp.net-mvc-4 - ASP.NET MVC 4 Web API 方法调用元数据

c# - 通过 POSTMAN 发送时 HttpRequest.Files 为空