首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Msbuild问题

Msbuild问题
EN

Stack Overflow用户
提问于 2011-07-21 14:57:00
回答 1查看 243关注 0票数 1

我有几个长期运行的定制构建任务。但是,它看起来是在UI线程上运行msbuild任务,导致IDE挂起。

我在google上做了一些搜索,我能找到的最好的是一些错误报告,上面写着“哦,是的,这是个问题,我们以后可能会修复它”。

http://connect.microsoft.com/VisualStudio/feedback/details/670873/visual-studio-ui-freezes-during-long-msbuild-task

http://social.msdn.microsoft.com/Forums/en-US/msbuild/thread/3289eb7d-7989-4350-8c43-02bf9913edbd/

因此,我决定通过以下方式为我的自定义任务修复它:

在VisualStudio.

  • Running中运行时,
  1. 检测后台线程上的任务,如果它们是
  2. ,则向UI线程中添加一个"MsgWaitForMultipleHandles /自定义消息泵“,以便在运行时保持UI响应。

这似乎很管用。现在,我可以在不冻结IDE的情况下运行构建。

无论如何,这提出了几个问题:

  1. 这样做安全吗?视觉工作室是一件很大的事情。如果我这样做,我会遇到什么重新进入的问题吗?这些重新进入的问题会导致世界末日吗?或者我可以忽略它们而逍遥法外。
  2. --我使用this post中概述的技术检测Visual。基本上,我将"BuildingInsideVisualStudio“属性的值分配给任务上的一个属性,并在Execute()方法中签入该属性。如果这是真的,那么我使用多线程行为,否则我只是使用顺序行为。然而,这要求每个目标使用任务将额外的goo放入msbuild文件中,以避免嘲笑。理想情况下,我希望“不吸”是正常的行为,没有特殊的配置。有任何方法可以检测到任务的Execute()方法中的visual studio吗?我可以读取任务实现中的项目属性而不需要对XML进行自定义编辑吗?我能以某种方式询问主机对象吗?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2011-07-21 15:42:45

尝试将环境变量MSBuildNoInProcNode设置为1,然后启动IDE。这将迫使IDE生成对子节点的请求。请注意,这不是一个经过充分测试的场景,因此可能会出现一些意想不到的行为,但它可能是获得所需结果的另一种选择,而不必更改项目文件或所有自定义任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6778129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档