gpt4 book ai didi

c# - Visual Studio 2010 —选择的解决方案配置会影响批量生成的输出

转载 作者:太空宇宙 更新时间:2023-11-03 14:00:34 24 4
gpt4 key购买 nike

摘要

我在Visual Studio 2010中有一个非常奇怪的行为,我不确定这是否是错误,或者是否有某种扭曲的逻辑来说明为什么这种方式。

执行摘要是,当我使用Batch Build-> Select All-> Rebuild为所有项目构建所有配置时,VS2010根据当前选择的解决方案配置生成不同的输出二进制文件。这确实很烦人,因为某些项目输出无法正确运行(启动时出现“ [项目名称]已停止工作”错误对话框),这取决于在批处理构建期间选择了哪种解决方案配置。

更多细节

我有一个包含3个C#项目的解决方案(1个.dll输出项目,由其他2个.exe输出项目引用)。在.exe输出项目中,项目A具有ReleaseDebug项目配置。项目B具有DebugRelease-x86Release-x64配置,因为它需要运行一些不同的后生成脚本来为其提供正确的版本的第三方库。

我有4个解决方案配置:DebugReleaseRelease-x86Release-x64Release-x86-x64设置为仅生成项目B。ReleaseDebug生成项目A和共享的dll项目。

如果我从当前配置下拉框中选择Debug解决方案配置,然后全部批量构建,那么当我尝试运行Project A的Release配置时,它将无法运行。如果我从下拉列表中选择其他任何解决方案配置,然后全部批量构建,那么它将成功运行。当我比较生成的.exe文件时,我发现这两种情况之间存在差异。



这是VS2010的某些已知预期行为吗?如果是这样,有人可以暗示为什么可能出现此问题以及如何解决该问题吗?这是VS2010中的错误吗?

后续线索? [编辑]

这与VS2010如何处理“项目引用”有关吗?正如我提到的,两个.exe项目都引用dll Project,将其称为ProjectD。我通过选择Add Reference-> Project-> Project D将引用添加到了ProjectA。例如,当然,Project A的配置不同想要使用Project D的不同配置版本。当我检查“属性”下的“ Project A”->“ Project D”参考时,我看到“ Path”字段不可编辑。根据选择的解决方案配置,我看到的是...\Project D\bin\Release\Project D.dll``...\Project D\bin\Debug\Project D.dll,并且看不到任何控制方法,因此我猜想VS2010在选择项目配置的详细信息时会变得很聪明。但是更奇怪的是,如果我选择Batch Build-> Select All-> Clean来删除所有编译的文件,那么当我检查它们时,这些引用路径将更改为...\obj\...而不是...\bin\...,并且我似乎无法更改除了删除并重新添加项目参考之外,它们都将返回。

跟进2 [Edit2]

我稍早撒谎,实际上我有2个.dll项目(例如,项目D和E),其中D通过项目引用来引用E。

我很确定VS2010中的Project References中的某些损坏或怪异是罪魁祸首,并认为我已经找到了与所选解决方案配置有关的行为的根本原因,请执行以下步骤

1)我批构建->全选->清理,以删除所有以前编译的二进制文件。

2)我从下拉菜单中选择一个调试解决方案配置。

3)我批量构建->仅选择Project A Release->重建。

通过查看“输出”窗口,我看到VS2010知道Project A依赖于D,D依赖于E,因此它尝试以相反的顺序构建它们。它成功构建了项目E的Release配置。但是随后,它尝试构建项目D的Release配置失败,因为它抱怨缺少缺少的E dll文件的Debug版本。同样,由于缺少D的Debug版本,A无法构建。

因此,似乎选择解决方案配置会覆盖“项目到项目”引用中引用项目的配置。

应该是这样吗???

最佳答案

经过进一步的搜索,我发现这是VS2010中的已知错误,被Microsoft标记为“ Wont Fix”。 VS2010中的批处理构建已被破坏。如果您认为这和我一样愚蠢,请继续向他们表达自己。

https://connect.microsoft.com/VisualStudio/feedback/details/556158/batch-build-links-to-wrong-referenced-projects

关于c# - Visual Studio 2010 —选择的解决方案配置会影响批量生成的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10824875/

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