问题标签 [devenv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1863 浏览

visual-studio-2012 - devenv.exe - 应用程序错误

我正在尝试安装 Visual Studio Ultimate 2012,但出现以下错误。

单击其中任何一个都将关闭 Visual Studio,我无法继续前进。

我尝试重新启动系统,卸载并重新安装 VS 包。他们俩都没有改变错误。

在此处输入图像描述

0 投票
1 回答
363 浏览

build - VS2012 x64 跨工具命令提示符

我有一个包含许多项目的解决方案,目前需要我首先以管理员身份运行 vs2012 x64 交叉工具命令提示符。然后我加载 DevEnv 并从那里构建项目。

如何使用 TFS 构建环境执行此操作?- 布鲁斯

0 投票
1 回答
2490 浏览

visual-studio-2012 - Visual Studio 2012 生成输出:任务已取消

我的团队有一台运行 Windows Server 2008 R2 Enterprise SP1 的虚拟机,我们用它来运行我们的夜间构建。我们正在使用 Visual Studio 2012 并通过从 C# 程序通过 System.Diagnostics.Process.Start 运行 devenv.exe 来启动构建过程。

最近我们一直在构建失败,输出日志看起来像

有时可能只有一两个项目,有时超过 100 个。FWIW,我们构建了三个解决方案,第一个失败了。接下来的两个得到正确构建。

通过查找有关该问题的信息,我知道输出是由于异常 System.Threading.Tasks.TaskCanceledException 在 VS 2012 中的某个地方被捕获。除此之外,我不知道发生了什么。我怀疑它可能与并行项目构建有关。到目前为止,我只看到了与此问题相关的另一篇文章 - http://social.msdn.microsoft.com/Forums/en-US/306f5a10-db72-4992-9d49-20ad1577ed05/visual-studio-2013-error -a-task-was-canceled?forum=visualstudiogeneral “答案”真的不是答案....

任何帮助或见解将不胜感激。

0 投票
1 回答
3739 浏览

msbuild - 为什么自上次构建解决方案以来没有任何变化时,msbuild 如此缓慢?

我有一个包含 109 个项目的解决方案。混合所有 - .NET、Silverlight、MVC、Web 应用程序、控制台应用程序。

现在我使用 msbuild 在控制台上构建它。这需要一些时间。可以理解 - 很多项目,很多文件。

但是当我在第一次之后第二次构建它时——即使实际上没有构建任何东西,它仍然需要很多时间——diag msbuild 日志证实了这一点。

例如,这里是第一个完整构建的任务性能摘要:

msbuild 声明Time Elapsed 00:08:39.44

美好的。现在我再次运行相同的命令行并得到以下信息:

msbuild 声称Time Elapsed 00:05:25.70

这提出了以下问题:

  1. 为什么ResolveAssemblyReference在第二次构建中花费这么多时间?在第一次构建中创建的所有缓存文件仍然存在。什么也没有变。那么为什么它与以前几乎相同 - 97 秒对 106 秒?
  2. 为什么ValidateXaml并且CompileXaml正在运行?我的意思是自完整构建以来没有任何改变!

现在我重复相同的实验,但这次我devenv在命令行上构建而不是msbuild. 与 msbuild 一样,不使用并行构建,并且日志级别为 diag。

devenv最后没有提供这么好的总结,它必须从每个项目的总结中手动聚合。

结果让我吃惊。我使用以下 powershell 脚本来汇总经过的时间:

devenv在命令行上从完全相同的立场构建完全相同的解决方案需要00:06:10.9000000第一个构建和00:00:03.1000000第二个构建。只需3秒!!!

我还编写了一个 powershell 脚本来汇总统计信息:

在第一个(完整)构建的日志上运行它会产生以下输出:

现在,对于第二次构建,结果是:

我们在这里谈论完全相同的解决方案!

最后,这是我使用该解决方案构建的脚本:

构建:

开发环境:

我的测试告诉我这msbuild是一个垃圾,我不应该在命令行上使用它来构建我的 C# 解决方案。https://connect.microsoft.com/VisualStudio/feedback/details/586358/msbuild-ignores-projectsection-projectdependencies-in-sln-file-and-attempts-to-build-projects-in-wrong-order添加到此感觉。

但也许我毕竟错了,一个简单的调整将使 msbuild 在第二次构建时像devenv现在一样高效。

有什么想法可以让 msbuild 在第二次构建中表现良好吗?

编辑 1

CompileXaml任务是在C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v5.0\Microsoft.Silverlight.Common.targetsMarkupCompilePass1中找到的目标的一部分:

正如我们所看到的 - 没有输入也没有输出。

接下来,第二次构建的 diag msbuild 日志不包含任何可疑词,例如“rebuilding”。

最后,我想注意到 msbuild 和 devenv 都是在完全相同的情况下执行的,并且没有一个使用多线程构建。然而差异是巨大的——超过 5 分钟(msbuild)与 3 秒(devenv,命令行)。

对我来说仍然是一个完全的谜。

编辑 2

我现在更了解devenv构建是如何工作的。它使用启发式方法来确定当前项目是否必须首先移交给 msbuild。此启发式默认启用,但可以通过将DisableFastUpToDateCheckmsbuild 属性设置为 来禁用true

现在,命令行 devenv 构建实际上需要 3 秒以上才能确定是否需要运行 msbuild。总而言之,对于像我这样的解决方案,可能需要 20 秒甚至 30 秒才能确定不需要将任何内容传递给 msbuild。

这种启发式方法是造成这种巨大时间差异的唯一原因。我猜 Visual Studio 团队认识到标准构建脚本的质量很差(其中像 MarkupCompilePass1 这样的任务不是由输入和输出驱动的),并决定首先想出一种跳过 msbuild 的方法。

但是有一个问题——启发式只检查 csproj 文件,没有检查导入的目标文件。此外,它对隐式依赖一无所知——比如从其他 TypeScript 文件引用的 TypeScript 文件。因此,如果您的 TypeScript 文件引用了属于不同项目且未从项目文件显式链接的其他 TypeScript 文件 - 启发式不知道它们,您最好拥有DisableFastUpToDateCheck = true. 构建会更慢,但至少它是正确的。

底线 - 我不知道如何修复 msbuild,显然 devenv 人也不知道。这似乎是他们发明启发式的原因。

0 投票
0 回答
353 浏览

visual-studio - 为什么 Visual Studio 认为 .csproj.user 是解决方案的依赖项?

我已经完全在 IDE 中构建了我的解决方案。关闭解决方案,然后重新打开它。然后我再次构建它并在 diag 构建日志中看到以下内容:

请再说一遍?为什么?如何?做什么的?

我的问题是如何防止它。谢谢。

附言

我正在使用 VS 2012 构建 C#、Silverlight、Web 应用程序。所有类型都可以在一个解决方案中找到。这个问题与我在同一领域的其他两个问题有关 -为什么自上次构建解决方案以来没有任何变化时,msbuild 如此缓慢?交替使用 msbuild 和 devenv 构建相同的解决方案

编辑

这是 .csproj.user 文件的内容:

请注意,我没有更改任何配置选项。只需打开、关闭、构建解决方案。

0 投票
2 回答
615 浏览

msbuild - devenv 总是重建我的项目,因为打字稿文件比 pdb 文件新

我有一个带有打字稿的项目。devenv 不断重建这个项目。诊断输出包含以下行:

那么,我该如何解决这个问题呢?上述打字稿文件确实比 PDB 更新。但是 PDB 不是打字稿编译的输出!!!

这是我编译打字稿文件的方法:

该项目指定TypeScriptCompile项目组中的打字稿文件,例如:

当然,仅@(OutputJavaScripts)列出预期的.js文件。那里没有 PDB 文件。

那么 devenv 是如何将 typescript 文件与 PDB 文件匹配的呢?我如何解决它?

编辑 1

我想澄清一下。它实际上并没有重新编译 typescript 或 C# 文件(这是它第一次重新编译 typescript 文件,但仅此而已)。它开始构建,因为 typescript 比 PDB 更新,但随后它认识到 PDB 依赖项实际上没有改变。javascript 文件也是如此——它们都是最新的。所以实际上什么都没有重建,但是为什么要首先进入构建序列!

0 投票
1 回答
570 浏览

c++ - 从 Jenkins 的 devenv 中分离控制台输出(逐个项目)

我让 Jenkins 启动并运行一项工作,使用devenv.

控制台日志输出看起来像正常的 VS 输出(更改示例):

是否有可能在 Jenkins 中分离日志(逐个项目)。或者也许是一些插件来跟踪每个项目构建日志。因为当构建失败时,很难按照日志树来查找所有项目事件。

0 投票
0 回答
28 浏览

silverlight - 为什么不同时构建 Silverlight 项目?

我有很多 Silverlight 项目的解决方案。我注意到一件奇怪的事情——当我在 Visual Studio IDE 中构建最大并发构建数设置为 8 时,Silverlight 项目是按顺序构建的。

其他项目(非 Silverlight)是并行构建的。

所以,这里是构建日志:

为什么 Silverlight 构建不交错?

0 投票
1 回答
1050 浏览

c# - Debug|Trace.WriteLine 来自 Visual Studio 中的 C# 插件 - 通过 ConsoleTraceListener 显示

我修改了一个 C# 插件,它是 Visual Studio 2.0 的 Python 工具的一部分,并希望在代码中查看 Debug.WriteLine 和 Trace.WriteLine 语句的输出。请注意,该插件用于 Visual Studio 2013 本身,修改 python 进程的调试....

我希望我可以按照 pminaev在此处的 PTVS 讨论论坛上的devenv.exe.config建议添加一个跟踪侦听器(将另一个 VS 附加到 VS 本身似乎很笨拙,所以我希望避免这种情况)。

我认为其他 .NET 应用程序的正确配置似乎不适用于 VS2013 本身。 我的努力记录在下面。

如果有人设法将插件调试/跟踪输出重定向到 Visual Studio 控制台(或比另一个附加的 VS 实例更方便的任何其他地方),非常感谢提示......


我的 Google-fu 出现了几个示例,基于这些示例我尝试添加...

...和...

之后启动 PTVS,没有什么可用的。无论使用哪种配置,我都会弹出一个窗口:

ActivityLog 对我来说意义不大:

当我尝试附加到远程 python 进程时,我得到另一个弹出窗口:

Google-foo 建议这是加载 .NET 版本的一些失败......?

0 投票
1 回答
2553 浏览

visual-studio-2010 - 便携式 Visual Studio 2010 和 cmake

今天是个好日子,

我正在尝试执行以下操作:

1)创建便携版微软Visual Studio(vs2010 sp1)+平台SDK(winsdk 7.0a)。
2) 将这些文件放到机器上,在项目上运行 cmake 并构建项目
我假设机器已将 .net 框架 4.0、VS 2010 win32/x64 可再发行组件安装到默认位置。

VS 2010 文件:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC
我把它们放到d:\distr\msvc100sp1目录下。

WinSDK 文件:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
我把它们放到d:\distr\WinSDK\7.0a目录下

我在做任何事情之前运行这个脚本 - 如果调用了 vcvars(在本例中为 amd64),它会重新创建环境:

但是运行 devenv(它在上面脚本之后的路径上)我收到了这个错误:

我认为 cmake 可以弄清楚如何处理编译器,但它抱怨编译器版本检查:

输出文件中存在关于缺少组件的相同错误。

想要的东西甚至可能吗?可能缺少哪些组件?
我想要的是执行我想要的,然后自动清理机器,即使它需要更改注册表项。