gpt4 book ai didi

visual-studio - 交替使用 msbuild 和 devenv 构建相同的解决方案

转载 作者:行者123 更新时间:2023-12-04 15:34:14 27 4
gpt4 key购买 nike

经常发生这种情况,我首先使用 msbuild 在命令行上构建一些解决方案,运行一段时间,然后发现我需要更改和调试它。因此,我在 Visual Studio 中打开它并最终在 Visual Studio 中构建它。

发生的事情是 VS 重建了解决方案的相当多部分,即使我什么也没做!

深入研究它会发现以下内容:

在 Visual Studio 中构建会生成空的 cs 文件并将它们注入(inject)到 Compile项目组。 自然,它们比已经构建的二进制文件更新,因此 devenv.exe 重建了大量的项目。感谢 TemporaryGeneratedFile_[guid] in /obj/debug breaking build

这是一个真正的无赖。我通过重命名 Microsoft.WorkflowBuildExtensions.targets 禁用了此行为文件 - 我不做工作流程。

我想我可以黑入 CoreCompileDependsOn并以某种方式中和 GenerateCompiledExpressionsTempFile来自 Microsoft.WorkflowBuildExtensions.targets 的目标,但这必须在 190 个项目中完成!这是一个严重的变化。

devenv.exe 似乎关心某些文件总是被复制到输出目录 ,即使 msbuild 不认为有问题。

事实上,这里是 devenv.exe 构建日志中的一行:

Project 'HRCore.Tests' is not up to date. Project item 'C:\abc\UI\HRCore.Tests\HRImport\Import_missing_state_county.xml' has 'Copy to Output Directory' attribute set to 'Copy always'.

所以呢? msbuild 不关心它,但 devenv 关心它。该文件不是 HRCore.Tests 的依赖项。 msbuild 做对了。

与此同时,我将其从 Always 更改为至 PreserveNewest .

无论如何,我很想知道如何消除这些差异。

例如,设置 BuildingInsideVisualStudio 是个好主意吗?至 true即使使用 msbuild 构建?

有任何想法吗?

附言

我们同时构建 .NET 和 Silverlight。控制台应用程序、dll 和 Web 应用程序。

最佳答案

此页面上的另一个有用的解决方案建议了几个替代方案,其中最好的显然是删除 GenerateCompiledExpressionsTempFile目标来自 CoreCompileDependsOn属性(property)。不幸的是,该属性是一个 MSBuild 属性,而不是 MSBuild 项,因此删除它的特定部分并不完全简单。[注 1.]

这也许就是为什么@jessehouwing 继续提出其他防止 的方法的原因。 Microsoft.WorkflowBuildExtensions 运行目标——因此添加了这三个烦人的 .cs文件到每次编译,即通过调整目标在决定做什么时检查的一些环境 MSBuild 值。

所以现在我的小贡献......为什么要操纵不需要的目标考虑的因素,试图欺骗它不运行,当你可以简单地清空整个 目标 本身?

只需将以下行添加到您的 .csproj 的底部项目文件:

    ...etc...
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="GenerateCompiledExpressionsTempFile" /> <!-- add this line -->
</Project>


备注:
1. 中当然可以从属性中删除分隔项MSBuild , 使用内联 $([System.String]::Replace(...)) , 例如。

关于visual-studio - 交替使用 msbuild 和 devenv 构建相同的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702989/

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