我试图通过exec任务得到简单的输出msbuild:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Test">
<Exec Command="echo test output">
<Output TaskParameter="Outputs" ItemName="Test1" />
</Exec>
<Exec Command="echo test output">
<Output TaskParameter="Outputs" PropertyName="Test2" />
</Exec>
<Message Text="----------------------------------------"/>
<Message Text="@(Test1)"/>
<Message Text="----------------------------------------"/>
<Message Text="$(Test2)"/>
<Message Text="----------------------------------------"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
但得到下一个输出:
echo test output
test output
echo test output
test output
----------------------------------------
----------------------------------------
----------------------------------------
Run Code Online (Sandbox Code Playgroud)
如何通过我的脚本输出?
我正在尝试编写一个MSBuild任务,它从我的生成构建脚本上的bin文件夹中删除Obj目录和PDB,似乎无法使其正常工作.
有没有人有他们这样做或类似的例子,或者链接到一个简单的删除文件和MSBuild目录的例子?
我最近不得不将一些代码从Visual Studio中的PreBuildEvent移动到BeforeBuild目标中,以使其在AppHarbor上运行.在这样做的同时,我也注意到了一个BeforeCompile目标.
这三个看似相似的事件有什么区别:PreBuildEvent,BeforeBuild Target,BeforeCompileTarget?
每个人能做什么/不能做什么,为什么你会选择一个而不是另一个?
msbuild msbuild-task visual-studio-2010 visual-studio appharbor
我有这个Msbuild代码:
<Import Project="A.proj" Condition="$(BuildDefinition) =='Dist Staging to Dev' Or $(BuildDefinition) =='Dist Staging to Dev(Services Only)'"/>
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有类似的东西检查一个字符串是否包含一些文字来获得类似的东西:
<Import Project="A.proj" Condition="$(BuildDefinition) CONTAINS 'Dist Staging to Dev'"/>
Run Code Online (Sandbox Code Playgroud) 我想在MsBuild任务中计算一个路径,供另一个MsBuild任务使用.完成此任务的最佳方法是什么?
设置环境变量,打印到Console,......?
我想在另一个文件xy.xml中使用字符串"我很好"替换文件test.xml中的"how r u"字符串.使用ms build中的正则表达式.
即我必须从一个文件(xy.xml)读取字符串并将其替换为另一个文件test.xml.所以请通过示例提供解决此问题的必要步骤
msbuild msbuild-task msbuild-propertygroup msbuild-buildengine
我正在开发一个自定义的MSBuild任务,它可以构建一个ORM层,并在项目中使用它.我受到Visual Studio保留MSBuild任务DLL而不放手的行为的阻碍.
我想像这样组织我的解决方案;
My Solution
|
+- (1) ORM Layer Custom Task Project
| |
| +- BuildOrmLayerTask.cs // here's my task
|
+- (2) Business Logic Project // and here's the project that uses it.
|
+- <UsingTask TaskName="BuildOrmLayerTask" AssemblyFile="$(TaskAssembly)" />
Run Code Online (Sandbox Code Playgroud)
但是,当项目(2)构建时,它会从项目(1)锁定到程序集.所以现在我无法在不关闭解决方案并重新打开它的情况下再次构建项目(1).
有没有什么方法可以组织事情,以便自定义构建任务不被Visual Studio锁定?
我写了一些MSBuild自定义任务,这些任务运行良好,并在我们的CruiseControl.NET构建过程中使用.
我正在修改一个,并希望通过调用Task的Execute()方法对其进行单元测试.
但是,如果遇到包含的行
Log.LogMessage("some message here");
Run Code Online (Sandbox Code Playgroud)
它会抛出一个InvalidOperationException:
任务尝试在初始化之前进行记录.消息是......
有什么建议?(过去我在自定义任务上主要经过单元测试的内部静态方法,以避免出现此类问题.)
我正在尝试使用MSBuild发布模式,但它始终默认为调试.知道为什么吗?
msbuild LP.sln/p:buildmode = release
我检查了以下帖子;
我知道有些公司允许您根据需要在构建机器上安装他们的产品,而无需单独的许可证(DevExpress是我想到的).但是我想知道微软是否对许可证有相同的限制.
MSBuild不直接支持vdproj,并要求您从命令行运行Visual Studio以构建安装项目.看到这里
我需要通过自动构建生成一个安装文件; 我是否需要为构建计算机购买额外的许可证?
编辑:我已经与负责许可的管理员交谈,他很高兴我在构建机器上安装VS2008而无需购买额外的许可证,相信不需要许可证.如果我在这里有更多官方信息,我会再次更新.
编辑2:我听说微软将允许VS2008安装在构建机器上,只要开发人员没有使用该实例进行主动开发.