用MSBuild 4.0记录构建信息
我在代码中使用MSBUILD 4.0,例如: var globalProperties = new Dictionary(); var buildRequest = new BuildRequestData(solutionPathAbsolute, globalProperties, null, new string[] { "Build" }, null); var pc = new ProjectCollection(); var result = BuildManager.DefaultBuildManager.Build(new BuildParameters(pc), buildRequest); 请注意,此API与MSBUILD 3.5完全不同...如何使用新API接收详细的构建消息? 解决方案 buildmanager上的方法允许您通过一组
8 2024-04-20
编程技术问答社区
MSBuild,基于一组路径包含文件
我正在尝试创建一个构建脚本,这将使我可以指定特定网站中包含的"模块项目"的路径列表. 因此,我有这个布局: customer folder |_MainProject |_ModuleProject1 |_ModuleProject2 因此,基本上,我希望能够指定一个包含ModuleProject1和2的项目组,然后将相关文件从其中复制到Mainproject中. 在我的主要构建脚本中,我想找出通往我卫星组件的路径,以及obj \ Release*.dll*.dll文件夹中的所有DLL. 我已经有项目文件(.csproj)的项目组,因此基本上我只想添加一些文件参考.但是我不知道
14 2024-04-05
编程技术问答社区
MsBuild--根据修改时间/名称从一个目录中删除文件
我有一个在目录中的每个构建上生成的文件列表C:\BuildArtifacts 目录的内容如下: TestBuild-1.0.0.1.zip TestBuild-1.0.0.2.zip TestBuild-1.0.0.3.zip TestBuild-1.0.0.4.zip TestBuild-1.0.0.5.zip TestBuild-1.0.0.6.zip 现在,在每个增量构建中,我只想保留两个最近的工件并删除其余的工件.因此,在此示例中,我想保留TestBuild-1.0.0.5.zip和TestBuild-1.0.0.6.zip 我该如何使用msbuild? 注意: 我设法在项目中获取了上述列表 解决方案 好吧,我们编写了一个自定义任务,以按
8 2024-04-05
编程技术问答社区
只有在项目实际建成后才运行MSBuild目标
我有一个构建 */ .sln文件的MSBUILD文件(构建存在的所有.sln文件). 构建使用 build 目标,因此,如果未对输入文件进行更改,则不应再次构建项目. 我想执行一些自定义目标,仅当一个项目实际上再次构建时. 如何完成? After Build 和 eathCompile 总是被调用,无论是否进行编译/构建实际发生. 解决方案 基本上您想要与PostBuildEvent相同的行为应该使用).这是解决方案: OnOutputUpdated
4 2024-04-04
编程技术问答社区
将dotnetcore项目迁移到1.0.4后,出现'dotnet build'错误。
我一直在尝试在迁移的.NET核心项目上运行dotnet build命令(从1.0.0-preview2-003131到1.0.4).我遵循了迁移该项目的步骤 c:\ program 文件\ dotnet \ sdk \ 1.0.4 \ microsoft.common.currentversion.targets(2867,5): 错误MSB4216:无法执行" Generateresource"任务,因为 MSBUILD无法创建或连接到使用运行时" CLR4"的任务主机 和建筑" x86".请确保(1)请求的运行时 和/或架构在机器上可用,(2) 需要可执行 存在并且可以运行. 我较早地迁移了其他几个服务,在整理了几个软件包依赖项之后,CLI命令工作正常.我检查了错误中提到的SDK位置,但找不到msbuild.exe(我确实找到了msbuild.dll和msbuild.deps文件).我需要CLI命令来为我拥有的CI/CD设置工作.对解密和解决此错误的任何帮助都非常感谢.
16 2024-01-08
编程技术问答社区
升级到.NET 4.5后,MSBuild部署失败
我们最近将VS 2010和.NET 4应用程序升级为VS 2012和.NET 4.5.我们有一个构建脚本可以在测试服务器上部署应用程序.我们有两个盒子 - 一个是Windows 8,vs 2012(Fresh Install),另一个是Windows 7,VS 2010和VS 2012(新安装). 从Windows 8 Box构建脚本运行构建脚本时,脚本运行良好,并将应用程序部署到测试服务器.但是,当从Windows 7框中部署应用程序时,我会收到以下错误: " c:\ achinth \ build \ work \ build \ qa1sb.proj"(demandall target)(1) - >" c:\ achinth \ build \ build \ work \ app \ app.csproj"(resolvereence; msdeploypuplish target) (2) - >(msdeployPublish target) - > c:\ p
20 2024-01-07
编程技术问答社区
在VS2010的构建后事件中,将bin文件复制到物理文件位置上
我想将BIN文件夹中生成的DLL复制到VS2010的Post Build Event上的文件位置. 可以帮助我. 谢谢 解决方案 您想添加类似: 的内容 xcopy /Q /Y "$(TargetPath)" "C:\path\to\somewhere\" 在 build build Events 选项卡中,在项目属性页面上的构建事件. /Y将阻止其提示您确认覆盖物. 如果您还需要复制.pdb文件,则需要类似的内容: xcopy /Q /Y "$(TargetDir)$(TargetName).*" "C:\path\to\somewhere\" 您可以通过单击"属性"选项卡中的编辑后构建... 按钮,然后在"属性"选项卡中单击 >按钮. 其他解决方案 右键单击项目,然后转到properties-> build Events->后构建命令行. 然后在: 中键入此内容 Cmd /C Copy "$(TargetPath)" "
20 2024-01-03
编程技术问答社区
在装有Windows SDK 7.1但没有VS2010的电脑上构建C++项目
我在VS2010中开发了一个C ++项目(某种控制台32位应用程序),该项目在我的PC上构建良好(Windows 7 32位).我的PC安装了Microsoft SDK 7.0A,我认为与VS2010捆绑在一起. 我尝试在构建服务器上构建项目,该项目没有安装任何视觉工作室 - 那里只有Microsoft SDK 7.1. 我尝试在MSBUILD的帮助下构建该项目(最终将成为TeamCity的跑步者的任务),在构建服务器上,我会遵循错误(提供详细的日志): Project "E:\win\core.sln" on node 1 (default targets). ValidateSolutionConfiguration: Building solution configuration "Debug|Win32". Project "E:\win\core.sln" (1) is building "E:\win\core_unittests.vcxproj" (2) on
20 2023-12-04
编程技术问答社区
通过MSBuild调用cl.exe时无限期挂起
我试图在(主要是C ++)项目上运行MSBUILD(想象一个非常庞大的代码库). Visual Studio 2015是有问题的工具集( Windows 7 SP1和VS 2015 Update 2 ).即使使用/m:1(从而强迫它仅使用一个处理器),我还是发现一些完全随机项目不断悬挂在编译阶段.例如,当此问题发生时,如果我查看令人讨厌的项目及其组成的文件,我可以看到.OBJ文件已为每个翻译单元成功创建.但是,系统永远不会进入链接阶段.我看到CL.EXE的两个实例在任务管理器上闲置,什么也不做.也许在30分钟左右后,当我杀死其中一个实例时,我会得到类似的东西: cl : Command line error D8040: error creating or communicating with child process [Path_To_The_Project_Where_The_Compiler_Was_Stuck.vcxproj] 之后,令人惊讶的是,编译器在其Merr
12 2023-11-24
编程技术问答社区
如何在MSBuild 12.0 / VS2013中调试项目文件?
追踪一个项目很容易在MSBUILD 4.0/VS2010 中,您要做的就是设置注册表密钥,该密钥启用了MSBUILD/DEBUG命令行选项.调试器将在项目文件的开始时启动和中断. msbuild 12为此引入了一个新的环境变量.在命令提示符下,设置msbuilddebugonstart = 1,然后运行msbuild(无命令行开关).这启动了调试器,但毫无疑问.该项目仅在开放vs的情况下完成. 我错过了设置吗?还是该功能已删除?我至少能够通过在调试中断中进行硬编码来使调试器停止,但这并不能帮助我跟踪 project 文件.
16 2023-11-24
编程技术问答社区
无法找到该类型或命名空间
我目前正在尝试将Visual Studio 2008中的Wix 3.5自定义操作项目转换为Wix 3.7和Visual Studio 2012,并且我将获得以下例外: 找不到类型或名称名称'mynamespace' 缺少使用指令或汇编参考?) 肯定会引用DLL,而Visual Studio 2012可以看到名称空间没有问题.名称空间下的所有内容甚至都在Intellisense中弹出,但是当我构建它时,我会得到此例外. 有人知道这里发生了什么? 附加信息: 我引用的名称空间是.NET 2.0库,并且自定义操作项目是.NET 2.0项目. 编辑: 进一步调查后,我得到了此警告,我猜这是问题的根源: 主要参考" mynamespace,版本= 8.5.1.20,culture =中性, publicKeyToken = f593502af6ee46ae,processorarchitecture = msil"不能 可以解决,因为它对.NET具有
26 2023-11-23
编程技术问答社区
从.sln文件中解析ProjectDependency
Project("{00000000-0000-0000-0000-000000000000}") = "Test Projects", "TestProjects", "{5FAF487E-B913-4D46-983E-CB13FDF36FCB}" EndProject Project("{11111111-1111-1111-1111-111111111111}") = "ProjPropHelperAPI", "ProjPropHelperAPI\ProjPropHelperAPI.vcxproj", "{22222222-2222-2222-2222-222222222222}" EndProject Project("{33333333-3333-3333-3333-333333333333}") = "ProjectPropertiesHelperAPI", "ProjectPropertiesHelperAPI\ProjectPropertiesHelperAPI.cspr
26 2023-11-23
编程技术问答社区
如何在Visual Studio 2010中捕获cl.exe命令行?
我有一个项目,该项目是我从makefile转换的,该项目具有一个源文件,该文件期望编译器的命令行选项.例如,如果您使用,则使用GCC构建项目时,它将吐出用于编译程序的GCC命令行. 我该如何在Visual Studio中做同样的事情,以便吐出用于编译程序的CL命令行?基本上,我想击中F7(构建解决方案),并使整个事情自动化.我找不到宏.谢谢 编辑;我的意思是从编程上讲,因此,例如,当我运行程序输出以包含使用的CL.EXE命令字符串时,我想要.您可以在Configuration Properties > C/C++ > Command Line > All Options上看到命令行,但是我找不到它的宏或将其封装在文件中的宏. 解决方案 a .vcxproj是MSBuild项目格式的Visual Studio项目.您可以使用Visual Studio GUI或MSBUILD API来运行msbuild.exe,devenv.exe,devenv.com来构建它.
16 2023-11-23
编程技术问答社区
输出路径和MSBuild
我有一个带有9个项目的解决方案.每个项目中的所有参考都将其胚属属性设置为false. 当我从VS构建它时,这些引用的二进制文件均未将其复制到输出构建目录.同样,当我使用MSBUILD构建时,我只看到项目二进制文件而没有参考. 但是,当我在msbuild命令中指定输出路径时,会复制一些引用,而我不知道为什么?我忘记设置了一些设置吗?有人看过吗? 解决方案 当您在不设置OutDir属性的情况下构建应用程序时,将文件复制到项目属性中指定的路径(构建\输出路径).此后,还有另一个步骤将引用的项目输出(*.dll文件)复制到您的应用程序的OutDir(*.EXE).但是,如果将CopyLocal设置为false,则不会发生最后一步.这样: ProjectEXE\OutDir = c:\a\bin ProjectDLL\OutDir = c:\b\bin 请注意两个OutDir不同的事实(在您的项目属性中指定了不同). 但是,当您使用命令策略设置OutDir时,您
8 2023-11-23
编程技术问答社区
VS2010因为修改了不相关的文件而重建了C++项目
我们所有人都已经知道VS2010已经对其构建系统进行了重大升级,该系统基于MSBUILD. 根据MS代表的说法(请参阅 Visual Studio 2010始终在冬眠/重新启动计算机后重建项目)MSBUILD现在将自己注入其他工具(例如C ++编译器,链接器等),以找出目标的依赖性. br> 这种方法的缺点之一是,由于不相关的文件的修改,您的项目现在可能会被迫重建 就我而言,它是C:\PROGRAMDATA\NVIDIA CORPORATION\DRS\NVDRSDB0.BIN,它通过NVIDIA Update Service(Windows 7 32位)定期更改. 我已经发现,通过将VS2010选项" msbuild项目构建输出词语"和" msbuild project构建日志文件file file dermosity "到" 诊断". 之后,我能够在构建输出窗口中看到问题的原因: Task "CL" (TaskId:55) Read Tracking Logs:
22 2023-11-23
编程技术问答社区
如何将一个属性表恢复到其默认值?
假设我在首次安装和打开Microsoft Visual Studio 2010之后立即执行以下步骤: File - > New - > Project - > Win32 Console App - > Finish. 转到Property Manager窗格 - >展开Debug | Win32 - >右键单击Microsoft.Cpp.Win32.user - >选择Properties. 以无知的方式疯狂地改变设置,通常像个傻瓜. 单击Apply,保存项目,并关闭Visual Studio. 如何将Microsoft.Cpp.Win32.user属性表还原为默认值"工厂"设置? 解决方案 我不确定这是否是官方方法,但确实有效... 默认属性表存储在以下目录中: %USERPROFILE%\AppData\Local\Microsoft\MSBuild\v4.0 ,如果删除它们,则将使用默认设置启动默认设置自动重新创建它们. 因此,
14 2023-11-23
编程技术问答社区
包括被引用的项目的.config文件
而不是不包括来自引用输出的文件组装,我想添加一个! 我有一个控制台应用程序项目(buildTest1),该项目引用了第二类库项目(ClassLibrary1).视觉工作室解决方案看起来像这样: 我有一个具有app.config的类库项目.我希望将此.config文件复制到引用项目的输出,就像.dll和.pdb文件一样.类库的配置文件被复制到类库输出目录为'classLibrary1.dll.config' 我尝试将其添加到.EXE Project的.csproj文件中,但似乎没有任何区别: .pdb; .xml; .config 解决方案 我很近...我将其跟踪到
10 2023-11-23
编程技术问答社区
SGEN : 错误。无法加载文件或程序集(HRESULT的异常: 0x8013141A)
vs 2010,Win Server 2003,.NET 3.5解决方案,这些解决方案是从.NET 1.1 migur的 解决方案中的所有项目均已延迟签名.可用于调试可以成功构建Soluton,但始终无法发布以下错误. SGEN:错误:无法加载文件或汇编'汇编,版本= 1.0.5000.0,culture =中性,publicKeyToken = xxxxxxxxx'或其依赖项之一.强名称验证失败. (Hresult的例外:0x8013141a) 汇编是我要构建的项目.该项目的所有引用的DLL都保存在本地文件夹中,并已签名.如果我更改项目的属性汇编签署它,则可以成功构建解决方案. 我创建了一个sgen.exe.config,以遵循 http://social.msdn.microsoft.com/forums/forums/nl-nl-nl/mmsbuild/thread/thread/6955581ae-77e7-4c3a-4c3a-4c3a-4c3a-bb3a bb3
74 2023-11-23
编程技术问答社区