2011-02-09 82 views
0

在Visual Studio Vs中,在命令行中执行msbuild时会出现奇怪的行为。任务在Msbuild中执行得很好,但在Visual Studio中不会执行

解决方案(s1)包含3个项目(p1,p2,pB)。 p1和p2是“正常”VS项目,而pb是我自己编写的xml msbuild文件。任务pB包含的目的是修改源代码的一部分。

我没有配置依赖关系,因此p1和P2依赖于pB,以确保pB是第一个要执行的项目。

当在Visual Studio中执行编译(按F6键)时,文件被修改,但似乎p1和p2在修改之前开始,所以我的结果不是我花费的。另外,当我查看构建控制台时,一切似乎都没问题。

当A通过“msBuild s1”启动编译时,一切都完美了!

如何在VS2010和msbuild之间有相同的行为?

THX

+0

如果你用/ maxcpucount运行它,检查msbuild是否仍然正常工作:4 – 2011-02-09 16:07:45

回答

0

每次构建VS 解决方案时,它都会创建一个.sln.cache文件,这是一个相当具有csproj文件的解决方案中包含的每个项目。

因此,在构建过程中修改csproj文件将不会对当前的构建(使用.sln.cache文件)产生影响。

0

如果您注册了这两个项目中的P1 BeforeBuild的pB项目和P2一样

<Target Name="BeforeBuild"> 
    <MSBuild Projects="pB.proj" Properties="Configuration=$(Configuration)" /> 
</Target> 

你可以打电话MSBuild task并通过所有需要的参数。该解决方案将适用于这两种环境。

+0

问题似乎是因为没有对p1文件进行修改而无法运行......我需要pB执行任何时间VS请求建立... – 2011-02-09 15:48:04