我一直在使用Delphi XE和MSBuild使用以下在batch file中正常工作的简单示例构build项目。 Project1是使用“File |”创build的空项目 新| | VCL在IDE中构build应用程序: call "c:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\rsvars.bat" msbuild.exe /target:Build /p:config=Release "c:\scratch\test\project1.dproj" pause 如果我在Delphi XE2中创build了一个新的空项目,将其保存为project1.dproj(dproj与XE非常不同),然后运行以下命令: call "c:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\rsvars.bat" msbuild.exe /target:Build /p:config=Release "c:\scratch\test\project1.dproj" pause 它给: Build FAILED. "c:\scratch\test\project7.dproj" (Build target) (1) -> c:\scratch\test\project7.dproj : error MSB4057: The target "Build" does not e xist in the project. 0 Warning(s) 1 […]
在我正在开发的团队项目中,如果在解决scheme中存在另一个具有相同名称的文件,则在文件中设置断点(例如IdeasController.cs )将导致错误的debugging器行为。 我已经在几个开发人员的工作站上重现了这个问题。 例 我在Web API中的IdeasController.cs中设置了一个断点: 另一个名为IdeasController.cs文件存在于我们单独的MVC 4 web项目中。 在下面的屏幕截图中,debugging器显示了Api->IdeasController源代码,但是行突出显示与Web->IdeasController的代码结构相匹配。 断点是重复的,其中一个位于注释块的中间。 断点窗口同时在两个文件中显示断点: 在某些工作站上,debugging器通过正确的行(不pipe行高亮)。 在别人身上,它通过不相关的行(包括评论和空白)高兴地走了过来。 我猜这取决于它select显示哪个源文件。 我试过了 我已经浏览了互联网。 当debugging文件( *.pdb ),源文件和编译后的代码不匹配时,就会出现这种问题。 有很多可能的原因:重复的文件名(可能会混淆debugging器[5] ),过时的项目构build文件,无效的解决schemecaching或不正确的构buildconfiguration。 这些是我find和尝试的解决scheme: 检查了我的构buildconfiguration。 确保项目不是以发布模式构build的。 确保我们没有启用代码优化 。 确保项目的debugging模块已正确加载。 (开始debugging项目,并勾选Debug > Windows > Modules 。这两个程序集都列出,没有优化,并且符号状态为“Symbols loaded”。) 重置debugging元数据和Visual Studiocaching。 closuresVisual Studio并删除解决schemecaching文件( *.suo )。 [1] 删除每个项目的构build输出( bin和obj文件夹)。 (供将来参考:在Windows资源pipe理器中打开解决scheme文件夹,并在search框中input:“ type:folder AND (name:=bin OR name:=obj) ”。 删除程序集caching文件夹( C:\Documents and Settings\<user>\Local […]
我正准备使用msbuild构build一个Visual Studio解决scheme文件。我使用下面的命令行来构build解决scheme msbuild.exe SolutionFile.sln /t:Build/p:Configuration=Release;Platform=Win32 尽pipe构build在某个时候开始,但是构build看起来是悬而未决,并且无法向前移动,如下所示 Done Building Project "D:\SolutionPath\ProjectFile10.vcxproj" (default targets). 在SolutionFile.sln下有很多.proj,我必须build立。 我必须使用msbuild.exe而不是devenv.com
我已经从VS2008迁移到VS2010(SP1)的解决scheme。 现在我的一个项目从来没有find和平的时间。 每个版本都有以下输出: 1>—— Build started: Project: PROJ_NAME, Configuration: Release Win32 —— 1>Build started 19/05/2011 7:59:27 AM. 1>InitializeBuildStatus: 1> Creating "Release\PROJ_NAME.unsuccessfulbuild" because "AlwaysCreate" was specified. 1>ClCompile: 1> All outputs are up-to-date. 1> All outputs are up-to-date. 1>Lib: 1> All outputs are up-to-date. 1> PROJ_NAME.vcxproj -> C:\projFolder.PROJ_NAME.lib 1>FinalizeBuildStatus: 1> Deleting file "Release\PROJ_NAME.unsuccessfulbuild". 1> Touching "Release\PROJ_NAME.lastbuildstate". 1> […]
我无法区分这两个。 请帮忙!
我有一些这样的XML: <?xml version="1.0" encoding="utf-8"?> <XmlConfig instancetype="XmlConfig, Processing, Version=1.0.0.0, Culture=neutral"> <item> <key>IsTestEnvironment</key> <value>True</value> <encrypted>False</encrypted> </item> <item> <key>HlrFtpPutDir</key> <value>C:\DevPath1</value> <encrypted>False</encrypted> </item> <item> <key>HlrFtpPutCopyDir</key> <value>C:\DevPath2</value> <encrypted>False</encrypted> </item> …. </Provisioning.Lib.Processing.XmlConfig> 在TeamCity中,我有很多系统属性: system.HlrFtpPutDir H:\ReleasePath1 system.HlrFtpPutCopyDir H:\ReleasePath2 我可以使用什么types的MsBuild魔法将这些值推送到我的XML文件中? 总共有20个左右的项目。
C#项目中的文件有“ 复制到输出目录”属性。 但在VC + +项目中是缺席的。 我知道,我可以在VC ++中使用构build事件 ,并写在那里 xcopy /y /d %(FullPath) $(OutDir) 有没有办法避免使用CMD(和其他脚本方法)? 在这种情况下,msbuild能做些什么来帮助吗?
对于Noda Time 1.1版,主要目标是构build一个可移植类库的风格,主要是为了支持Windows Phone和Windows Store应用程序。 这意味着失去了一些function,所以我们build立一个桌面configuration和一个PCLconfiguration(对于每个debugging,发布和“签名版本”)。 为了避免不必要的工程文件,所有6个configuration都存在于同一个工程文件中。 项目文件被自定义为生成一个名为“Portability”的属性,该属性设置为“PCL”或“Desktop”,如下所示: <!– Set the custom Portability property based on configuration –> <PropertyGroup> <Portability Condition="'$(Configuration)' == 'Debug Portable'">PCL</Portability> <Portability Condition="'$(Configuration)' == 'Release Portable'">PCL</Portability> <Portability Condition="'$(Configuration)' == 'Signed Release Portable'">PCL</Portability> <!– Default to desktop if not explicitly set above –> <Portability Condition="'$(Portability)' == ''">Desktop</Portability> </PropertyGroup> 然后,我们根据上述属性为便携式和桌面使用单独的属性组。 这就是将项目types定义为“类库”或“可移植类库”(以及共享Librarytypes): <!– Desktop-specific properties […]
这应该是显而易见的,但我不能使其工作… 我想要做的事情很简单: 如果出现警告,我希望我的编译失败并显示错误 。 是的,着名的TreatWarningsAsErrors … 我configuration它在我的C#项目属性 这导致在我的csproj例外TreatWarningsAsErrors部分: <TreatWarningsAsErrors>true</TreatWarningsAsErrors> 到目前为止,如果我在代码中添加一个无用的privatevariables,会导致编译错误: private int unused; 错误3警告错误:字段'XXXX.unused'从不使用 但是,整个问题是,我不能使它适用于程序集引用问题 。 如果我有一个未知程序集的引用,编译器(devenv或msbuild)会引发警告,但是我想要一个错误。 最终,我试图configuration一个门控登记TFS生成configuration,所以TFS将拒绝提交,以防万一有一个“ 被引用的组件'XXXX'找不到 ”警告。 比修改构build过程模板更简单的事情会很好。
为多个解决scheme集中configuration,应用程序设置和连接string,同时切换到从命令行使用msdeploy来部署Web应用程序。 理想情况下,我想要构build一次包,并获取最新的configuration,因为包被部署到每个环境。 我需要一些最好的方法build议。 使用Parameters.xml和SetParameters.xml文件dynamic交换设置和连接string。 请参阅http://vishaljoshi.blogspot.com/2010/07/web-deploy-parameterization-in-action.html 使用machine.config或服务器级别的web.config文件来存储常见的应用程序设置和连接string。 使用https://github.com/sayedihashimi/package-web中的packageweb NuGet包,它可以使用msdeploy使用web.config转换。 使用文件或configSource属性以及SetParameters指向不同的configuration文件,但是必须相对于web根目录。 使用发布configuration文件 请参阅使用发布configuration文件部署现有包 谢谢