相关疑难解决方法(0)

如何从MSBUILD覆盖.NET中的引用的CopyLocal(专用)设置

我已经和它搏斗了几天,经过大量的搜索,我找不到我应该走的路.

我想要做的是建立一个MSBUILD项目,它将构建我们的整个.NET应用程序(8个解决方案的常量,可能有250个项目在它们之间拆分),并从单个项目文件中覆盖了许多设置以进行调试构建为了我自己.

具体来说,我想构建我们的发布配置,优化关闭并生成完整的调试信息/ pdbs.另外,为了减少我们当前超长的构建时间,我希望每个项目的每个引用都"复制本地"(或实际的proj文件xml中的私有)为false.

第一件事情相当简单,我可以相当轻松地覆盖项目级属性(你甚至可以使用/ p从MSBuild命令行执行此操作),但我无法弄清楚如何覆盖引用上的属性.我已经尝试过在StackOverflow和网络上看到的几件事,但还没有解决方案.

我可以通过改变Microsoft.Common.targets做我想做的事情,注释掉_CopyFilesMarkedCopyLocal目标中的代码完全跳过这些文件的复制.但我不想改变我的全局配置并在所有情况下都这样做.我创建了自己的备用目标文件 - 如果我将单个项目文件更改为指向它,则可以正常工作 - 但我无法弄清楚如何指定它在顶层使用(我的.proj文件只是构建所有8种解决方案).如果我能以某种方式覆盖顶层的_CopyFilesMarkedCopyLocal目标,那将是很好的,这样如果MS更改默认目标文件,我的构建不会搞砸,但我也无法弄清楚如何使这项工作.

最好的办法是,如果有一种方法可以覆盖引用级属性,就像你可以项目级属性一样,而不必重写/覆盖构建目标的东西 - 但是我没有发现任何可能的信息.

在此先感谢任何帮助.

PS我实际上不可能只浏览所有项目文件并进行更改; 我需要一个解决方案,将现有代码保留原样.

.net msbuild

25
推荐指数
2
解决办法
3万
查看次数

改善CI构建时间(.NET)

我们正在使用TeamCity作为CI服务器开发应用程序框架+"插件".

项目细节

  1. 4 Visual Studio解决方案
  2. ~70个项目(增加)
  3. 目前使用TeamCity运行2个构建:CI和FULL构建.

CI - 在每次提交时触发.

全部 - 每晚跑步.

我想提高两个版本的性能(尤其是CI版本,因为它需要尽快提供输出).

关于可以有效和轻松改进的内容,是否有任何指导方针?

构建过程只是构建一个.sln文件并运行一些单元测试.

考虑的方向:

  • MSBuild并行化
  • 覆盖CopyFilesToLocal

不确定这些是否适用/将导致性能提升.

我正在寻找更多方法来改善构建时间(大约需要3-4分钟).

.net c# teamcity continuous-integration build

23
推荐指数
4
解决办法
7608
查看次数

如何在不检查依赖项的情况下构建C#项目?

给出一个解决方案:

  • 项目P1引用了P2
  • P2引用了P3
  • P3参考了P4

当你以这种方式调用msbuild时:

msbuild.exe /v:m "c:\mysolution\p1\p1.csproj"
Run Code Online (Sandbox Code Playgroud)

如有必要,msbuild检查所有项目依赖项是否构建依赖项.典型的输出是:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.1]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

  P4 -> c:\mysolution\P4\bin\Debug\P4.dll
  p3 -> c:\mysolution\p3\bin\Debug\p3.dll
  p2 -> c:\mysolution\p2\bin\Debug\p2.dll
  p1 -> c:\mysolution\p1\bin\Debug\p1.dll
Run Code Online (Sandbox Code Playgroud)

就我而言,我知道依赖存在并且没有问题.

有没有办法只在p1.csproj不验证依赖项的情况下构建项目?解决方案可以使用msbuild或其他内容.

c# msbuild visual-studio

8
推荐指数
1
解决办法
3062
查看次数