不同的构建操作在 Web API 项目中有什么作用(也可能适用于其他类型)?
我看到:无、编译、内容、嵌入式资源、AdditionalFiles、CodeAnalysisDictionary、ApplicationDefinition、页面、资源、SplashScreen、DesignData、DesignDataWithDesignTimeCreatableTypes、EntityDeploy、XamlAppDef、Fakes
我在 StackOverflow 上发现了类似的问题,但它们没有链接到任何 Microsoft 文档或包含所有项目。即,AdditionalFiles 或 Fakes 有什么作用?
是的,我确实看过,但在文档中找不到。
最佳答案
没有关于这些属性的集中文档。原因是这个列表是可扩展的,每个 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/