【问题标题】:Task execute well with Msbuild but not in visual studio任务在 Msbuild 中执行良好,但在 Visual Studio 中不执行
【发布时间】:2011-02-09 14:49:30
【问题描述】:

我在 Visual Studio Vs 在命令行中执行 msbuild 时遇到了一个奇怪的行为。

一个解决方案 (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 之间有相同的行为?

谢谢

【问题讨论】:

  • 检查 msbuild 如果你使用 /maxcpucount:4 运行它是否仍然正常工作

标签: visual-studio-2010 msbuild


【解决方案1】:

每次您构建 VS 解决方案时,它都会创建一个 .sln.cache 文件,该文件对于您的解决方案中的每个项目来说都是一个相当不错的 csproj 文件。

因此,在构建期间修改 csproj 文件将不会影响您当前的构建(使用 .sln.cache 文件)。

【讨论】:

    【解决方案2】:

    如果你在 BeforeBuild 中同时在项目 p1 和 p2 中注册 pB 项目,比如

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

    您可以调用MSBuild task 并传递所有需要的参数。此解决方案适用于两种环境。

    【讨论】:

    • 问题似乎是它没有运行,因为没有对 p1 的文件进行任何修改...而且我需要在 VS 请求构建时执行 pB...
    • 我的错误。它运行但没有考虑到我对 PB.proj 所做的任何更改。有没有一种我可以在某处取消的缓存?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-17
    • 1970-01-01
    • 2017-10-19
    相关资源
    最近更新 更多