gpt4 book ai didi

c# - Visual Studio C# 项目在从调试切换到发布时强制重建,反之亦然

转载 作者:太空狗 更新时间:2023-10-29 20:36:14 25 4
gpt4 key购买 nike

似乎 Visual Studio 2012 C# 项目会在您每次从调试切换到发布时强制重建,反之亦然,即使项目中没有任何更改。对于独立项目不会发生这种情况——但如果您将单个项目引用添加到类库,它就会在您每次更改为不同的构建配置时开始表现出这种行为。每当配置选择时,我都追踪到 force.build 文件(在 obj\Debugobj\Release 中)的生成变化。为什么是这样?可以禁用吗?我认为切换配置本身不需要重建。我在任何文档中都找不到任何提及“force.build”文件和/或如何禁用此“功能”的信息。

重现问题:

  1. 单击文件/新建项目...
  2. 创建一个新的 Visual C# -> 控制台应用程序。保持生成的代码不变。
  3. 在解决方案资源管理器中右键单击新解决方案并选择添加 -> 新建项目...
  4. 选择 Visual C# -> 类库。保持生成的代码不变。
  5. 在解决方案资源管理器中右键单击 ConsoleApplication1 并选择 Add Reference...
  6. Solution -> Projects 中选中 ClassLibrary1 旁边的框,然后点击 OK
  7. Debug 配置中构建项目。它按预期构建。
  8. 切换到Release 配置并重新构建。它按预期构建。
  9. 切换回 Debug 并重新构建。它构建,但不应该构建。已经建好了吧?我们所做的只是更改目标配置选择。

这是一个错误吗?有解决方法吗?

最佳答案

我承认我从来没有太关注它,但我只是出于好奇尝试了一下(Visual Studio 2012 Update 4)。

对于您描述的单个项目,我尝试切换配置,显然,当我更改配置时,主项目再次构建:

========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========

但是如果我查看输出文件夹,没有文件正在更新(每个文件的更改时间与之前的构建相同),除了 vshost.exe(我禁用了它,但得到了相同的消息) .然后我尝试将构建日志设置得更详细(工具 - 选项项目和解决方案 - 构建和运行 - MSBuild 项目构建输出详细信息 - 从“最小”更改为“正常”或“详细”):

enter image description here

然后我得到以下输出:

1>------ Build started: Project: ConsoleApplication1, Configuration: Release Any CPU ------
1>Build started 06/10/2015 00:26:50.
1>GenerateTargetFrameworkMonikerAttribute:
1>Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
1>CoreCompile:
1>Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
1>_CopyAppConfigFile:
1>Skipping target "_CopyAppConfigFile" because all output files are up-to-date with respect to the input files.
1>CopyFilesToOutputDirectory:
1> ConsoleApplication1 -> c:\users\user\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\bin\Release\ConsoleApplication1.exe
1>
1>Build succeeded.
1>
1>Time Elapsed 00:00:00.09
========== Build: 1 succeeded, 0 failed, 1 up-to-date, 0 skipped ==========

所以看起来这个项目并不是每次都真正重建。相反,如果您发现所有内容都已重建(检查输出目录文件的更改时间),请尝试按照我的描述增加构建日志的详细程度,看看发生了什么。希望对您有所帮助。

关于c# - Visual Studio C# 项目在从调试切换到发布时强制重建,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32956136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com