Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VisualStudio(2010)build与MSBuild在命令行中的不同行为_C#_.net_Visual Studio_Msbuild_Version - Fatal编程技术网

C# VisualStudio(2010)build与MSBuild在命令行中的不同行为

C# VisualStudio(2010)build与MSBuild在命令行中的不同行为,c#,.net,visual-studio,msbuild,version,C#,.net,Visual Studio,Msbuild,Version,我正在尝试使用自定义MSBuild目标自定义我的解决方案,该目标修改AssemblyVersion和AssemblyFileVersion程序集属性,并从CI中输入生成编号,或者如果我们在本地计算机上生成,则仅增加当前值1。我已将该自定义目标作为BeforeBuild标准目标的依赖项,因此它应该在每次生成之前执行: <Target Name="BeforeBuild" DependsOnTargets="VersionTag" /> 知道VS在后台使用MSBuild,我希望这两

我正在尝试使用自定义MSBuild目标自定义我的解决方案,该目标修改AssemblyVersion和AssemblyFileVersion程序集属性,并从CI中输入生成编号,或者如果我们在本地计算机上生成,则仅增加当前值1。我已将该自定义目标作为BeforeBuild标准目标的依赖项,因此它应该在每次生成之前执行:

  <Target Name="BeforeBuild" DependsOnTargets="VersionTag" />

知道VS在后台使用MSBuild,我希望这两种构建的行为都是一样的,至少在核心事件序列上是这样。因此,现在我有点困惑,是否有机会使VS和命令行构建保持一致。

MSBuild和VS之间有很多区别。对于一个文件,许多.targets文件,包括.NET/VS附带的文件,都有条件='$buildingSideVisualStudio'=='true'的内容。此外,VS在生成解决方案的依赖关系树时采用了许多快捷方式

至于你的问题:我不喜欢像preforebuild那样凌驾于目标之上的做法。如果是两个人干的呢?后者将覆盖前者。相反,请使用MSBuild 3和更高版本的BeforeTargets功能-在您的情况下,您的目标只是:

<Target Name="VersionTag" BeforeTargets="BeforeBuild">(...)
…也许这也能解决你的问题


如果没有,您可以增加MSBuild日志记录级别Tools=>Options=>Projects and Solutions=>Build and Run,然后日志会告诉您更多信息。

MSBuild和Visual Studio 2010之间存在一些差异。例如,msbuild可能会发现您的解决方案所依赖的项目在sln文件中未单独指定。。。此外,msbuild无法生成安装项目。使用csproj文件的PreBuildEvent怎么样?@BernhardHiller-我理解这样的差异,但是关于C项目的构建顺序,我本来希望它是相同的。。。然而,我错了。我不想使用该事件,因为它只支持命令行语法,并且我已经使用MSBuild XML编写了所有内容。如果MSBuild阶段晚于VS中的其他阶段,我认为这不会解决问题。但我接受您的答案。不管怎样,我没有更好的了。谢谢你的回答,还有$buildingSideVisualStudio的条件,我不知道。
<Target Name="VersionTag" BeforeTargets="BeforeBuild">(...)