任何人都可以解释.csproj和.msbuild文件之间的区别吗?
答案 0 :(得分:1)
msbuild文件定义了运行代码构建的过程 - 通常用于自动构建,例如持续集成构建。 csproj文件定义属于C sharp项目的所有文件,设置和配置。两者都是xml文件,但它们代表了非常不同的功能。您可以在此处阅读msbuild文件的架构:https://msdn.microsoft.com/en-us/library/5dy88c2e.aspx此SO帖子描述了csproj文件:What does the .csproj file do?
答案 1 :(得分:1)
差异确实很小,它更像是一种惯例。 (顺便说一句Miscrosoft通常不使用.msbuild扩展名:他们使用.targets常规msbuild文件,.props用于属性表或文件中没有MsBuild目标,并且根据语言使用.csproj / .vcxproj等等。实际上我不认为我曾经遇到过.msbuild,所以我想知道你在哪里看到它..
无论如何:使用的语法完全相同,它是MsBuild理解的xml。所以从这个角度来看,.csproj / .targets / .msbuild / .whatever之间存在 no 的区别。如果您将.csproj更改为.msbuild并将其提供给msbuild.exe,那么它对待文件的方式就没有区别了。另一种方法是相同的,但Visual Studio不希望在它没有可识别的扩展时在解决方案中加载项目。在这里我们来看实际的差异:所有与IDE有关。 csproj的一些内容有点特殊,并且以Visual Studio理解的方式构建:它使用该信息来决定如何在与解决方案资源管理器和属性视图相关联的各种用户界面中表示文件。此外,在安装Visual Studio之后,它会注册.csproj扩展名,以便您获得一个漂亮的文件图标,并且该扩展名与VS相关联。
答案 2 :(得分:0)
csproj为您提供解决方案资源管理器中的节点以及列出.cs文件的位置。 msbuild文件为您提供了某种强大的功能,您可以将其插入到项目的构建步骤中,有点像项目的“使用”语句。您也可以使用像批处理文件那样的msbuild,它基本上就像一个说
的程序using the_file.msbuild;
the_file.msbuild.target();
答案 3 :(得分:0)
CSProj文件是msbuild文件的特定实例。 csproj文件遵循视觉工作室需要被识别为“项目”的特定约定。
你当然可以编写一个自定义的msbuild文件,visual studio将不知道该怎么做。请注意:虽然msbuild必须是xml格式,但它可以有任何后缀或文件扩展名。我称之为*.targets
,*.props
,*.xml
等等。
当然,visual studio不知道如何处理*.props
或*.targets
文件:因此它只是将它们作为文本文件加载并相应地显示它们。它不会将它们加载为*.csproj
个文件。