C# MSBUILD与VS2008版本之间的差异

C# MSBUILD与VS2008版本之间的差异,c#,visual-studio-2008,msbuild,continuous-integration,C#,Visual Studio 2008,Msbuild,Continuous Integration,我正在尝试建立一个持续集成过程,在这个过程中,服务器将构建一个VS2008.SLN文件并执行一些其他操作 从VisualStudio构建时,一切都很好。 但是,当使用CI服务器(使用MSBUILD)生成时,许多MSB3191的生成都失败(无法创建目录…) 在我的SLN中,各种项目都有一个非默认的输出路径,因为我将它们的所有输出复制到一个位置,这似乎是导致问题的原因 MSBUILD和VS中使用的生成之间有什么区别?为什么一个成功而另一个失败 此外,避免此类问题的良好做法是什么 以下是MSBUILD

我正在尝试建立一个持续集成过程,在这个过程中,服务器将构建一个VS2008.SLN文件并执行一些其他操作

从VisualStudio构建时,一切都很好。 但是,当使用CI服务器(使用MSBUILD)生成时,许多MSB3191的生成都失败(无法创建目录…)

在我的SLN中,各种项目都有一个非默认的输出路径,因为我将它们的所有输出复制到一个位置,这似乎是导致问题的原因

MSBUILD和VS中使用的生成之间有什么区别?为什么一个成功而另一个失败

此外,避免此类问题的良好做法是什么

以下是MSBUILD的输出:

“D:\MasterBuild\u Dev\tlv\u Platform\UBUILD\RecordersAutoFwk\Main.sln”(默认目标)(1)-> “D:\MasterBuild\u Dev\tlv\u Platform\UBUILD\Regression Automation Framework\Actions\Common\Common\EM.Licensing.csproj”(默认目标)(46)-> (准备构建目标)->
C:\Windows\Microsoft.NET\Framework64\v3.5\Microsoft.Common.targets(790,9):错误MSB3191:无法创建目录“….\RecordersAutoFwk\Main\bin\Debug\lib\”。无法创建“D:\MasterBuild\u Dev\tlv\u Platform\UBUILD\RecordersAutoFwk\Main\bin\Debug\lib”,因为已存在同名文件或目录。[D:\MasterBuild\u Dev\tlv\u Platform\UBUILD\Regression Automation Framework\Actions\Common\Common\EM.Licensing.csproj]

如果没有更多详细信息,我不得不说您的一个帐户在服务器上存在权限问题


VS运行在什么帐户下?MSBuild在哪个帐户下运行?

如果没有更多详细信息,我只能说您的一个帐户在服务器上存在权限问题


VS运行在什么帐户下?MSBuild是在哪个帐户下运行的?

当我使用多个内核运行MSBuild时,有时会遇到这样的锁定冲突-使用/maxcpucount:n时,似乎其中一个进程正在为另一个进程锁定文件夹,然后我得到类似的结果。 不使用开关修复它,不会发生在所有sln上,只是一些。 您是否不使用后期生成命令来执行复制,而不是生成输出路径


如果我们知道你的msbuild命令会有帮助吗

当我使用多个核心运行msbuild时,有时会遇到这样的锁定冲突-使用/maxcpucount:n,然后似乎其中一个进程正在为另一个进程锁定文件夹,然后我得到类似的结果。 不使用开关修复它,不会发生在所有sln上,只是一些。 您是否不使用后期生成命令来执行复制,而不是生成输出路径


如果我们知道你的msbuild命令会有帮助吗

能否运行msbuild Solution.sln/verbosity:diag>log.txt并显示与错误相关的日志行?是否尝试使用msbuild在本地生成它?是否以与生成服务器上相同的方式失败?尝试这两个建议。从生成机器添加了MSBUILD输出是否可以运行MSBUILD Solution.sln/verbosity:diag>log.txt并显示与错误相关的日志行?是否尝试使用MSBUILD在本地生成它?是否以与生成服务器上相同的方式失败?尝试这两个建议。从生成机器添加的MSBUILD输出与权限无关。我基本上已经将一组项目的输出路径设置到了相同的位置。只要一开始创建文件夹,就可以了。要创建此文件夹的下一个项目失败,因为它已创建(这是我的假设,需要确认)。它与权限无关。我基本上已经将一组项目的输出路径设置到了相同的位置。只要一开始创建文件夹,就可以了。希望创建此文件夹的下一个项目失败,因为它已经创建(这是我的假设,需要确认)。不确定,因为Teamcity是调用构建的项目。同时,我切换到复制作为构建后命令,工作正常。不确定,因为Teamcity是调用构建的那个。在此期间,我切换到复制作为后期构建命令,效果很好。