标签: msbuild

使用MSBUILD任务更新web.config

我正在使用Web部署项目在我正在部署的网站上执行一些后期构建任务.

我想使用FileUpdate任务来更新我的web.config并将编译模式从更改debug="true"debug="false".

所以,从此

<compilation defaultLanguage="c#"
                 debug="true" />
Run Code Online (Sandbox Code Playgroud)

对此

<compilation defaultLanguage="c#"
                 debug="false" />
Run Code Online (Sandbox Code Playgroud)

我的FileUpdateTask看起来像这样

<FileUpdate Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU'"
                Files="$(Configuration)\Web.Config"
                Regex="debug=\"true\""
                ReplacementText="debug=\"false\"" />
Run Code Online (Sandbox Code Playgroud)

但这完全无效,因为你无法逃避XML中的引用.

我怎么能匹配正则表达式中的调试属性并具有有效的ReplacementText值?

干杯

asp.net msbuild web-deployment-project web-config fileupdate

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

停止/运行Windows服务并构建解决方案

我希望有一个脚本可以停止某个Windows服务,构建或重建解决方案,并在构建过程完成后运行该服务.

我应该使用Msbuild吗?或者还有其他方法吗?

.net msbuild automation build-process windows-services

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

将解决方案构建输出放在不同的目录中!

我在构建我的解决方案时遇到了一个问题(Hardcopy.sln).这个解决方案包含许多其他模块,每个模块都将它们的输出定向到bin/debug /文件夹.在整个解决方案构建期间.我想将每个模块的输出重定向到不同的位置.如何做同样的事情.我正在使用MSbuild实用程序在我的nant脚本中构建解决方案.

我想在Nant中使用Msbuild实用程序来实现它有任何出路:

谢谢Rajesh

msbuild c#-4.0

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

MSBuild扩展包压缩文件夹和子文件夹

我必须压缩我的文件夹和子文件夹使用MSbuild,我正在查看MSBuild扩展包,并尝试了这一点

 <ItemGroup>
  <ZipFiles Include="\Test\Web\**\*.*" >
    <Group>Release</Group>
  </ZipFiles>
 </ItemGroup>



 <MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="@(ZipFiles)" ZipFileName="$(WorkingDir)%(ZipFiles.Group).zip"/>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它只是将所有文件添加到root,而不是将其添加到zip文件中的特定子文件夹中.

我错过了什么,请有人帮忙.

msbuild msbuildcommunitytasks

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

如何使用IVsBuildPropertyStorage添加MSBuild导入?

我正在尝试以编程方式将导入任务添加到.csproj文件,但我不想使用Microsoft.Build.BuildEngine对象来执行此操作,因为VS将弹出有关正在修改的项目文件的警告视觉工作室.

我已经看过几页[1] [2]建议IVsBuildPropertyStorage接口让我访问.csproj文件的MSBuild部分,但是我无法弄清楚如何做到这一点,或者它是否真的可能真的.看起来我需要指定我想要访问的属性的名称,但我不知道如何解决这个问题.为"导入"属性调用GetPropertyValue()不会返回已设置的项目文件的任何内容,我希望最终结果如何显示:

EnvDTE.Project proj = ...;
var sol = Package.GetGlobalService(typeof(VsSolution)) as IVsSolution;
IVsHierarchy hier;
sol.GetProjectOfUniqueName(p.UniqueName, out hier);
var storage = hier as IVsBuildPropertyStorage;
string val;
storage.GetPropertyValue("Import", String.Empty,
                         (uint)_PersistStorageType.PST_PROJECT_FILE, out val);
// val is null
Run Code Online (Sandbox Code Playgroud)

[1] https://mpfproj.svn.codeplex.com/svn/9.0/Tests/UnitTests/ProjectTest.cs
[2] http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/e1983591-120a-4a2f-A910-e596dd625e68

谢谢.我很感激我能得到的任何建议.

msbuild msbuild-task visual-studio

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

解释MSBuild性能摘要输出

我试图了解MSBuild的一些性能摘要输出.结果如下所示:

Target Performance Summary:
        0 ms  PrepareForRun                             74 calls
        0 ms  Compile                                   74 calls
        ...
        ...
        ...
        ...
    15173 ms  ResolveProjectReferences                  74 calls
    29607 ms  Build                                     75 calls

Task Performance Summary:
        2 ms  CreateCSharpManifestResourceName           6 calls
        2 ms  ResolveKeySource                           1 calls
    ...
    ...
    ...
    ...
     3623 ms  Copy                                     511 calls
     7468 ms  ResolveAssemblyReference                  74 calls
    11234 ms  Exec                                      12 calls
    48600 ms  MSBuild                                  210 calls

Build succeeded.
    0 Warning(s)
    0 Error(s)

Time Elapsed 00:00:29.60
Run Code Online (Sandbox Code Playgroud)

为什么MSBuild的总时间超过总耗用时间?事实上,运行此构建的实际秒表时间约为29秒.我在网上看到的这些摘要的任何示例都表明,任务和目标的总时间是相同的.

msbuild

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

ASP.NET什么时候我打算构建我的项目

完全愚蠢的问题,但我正在编写我的第一个ASP.NET C#Web表单应用程序,有时我只能编写一个更改并将其保存在Visual Studio中,它只是花花公子,但其他时候似乎我必须重建项目为更改生效.

谁能告诉我重建需要满足哪些条件?

谢谢!

汤姆

c# asp.net msbuild debugging

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

ClickOnce PublishUrl无法使用MSBuild任务

我有一个在Windows Server 2003上运行的CruiseControl .NET构建服务器,我正在尝试使用msbuild 4构建和发布我的Wpf(3.5)ClickOnce应用程序.我的构建脚本中的任务如下:

<MSBuild Projects="src\TestProject\TestProject.csproj"
                    Targets="publish"          
                    Properties="PublishUrl=c:\testwpf\;InstallUrl=http://devserver/TestProjectUpdates/;" />
Run Code Online (Sandbox Code Playgroud)

但是,在运行构建之后,安装不会部署到c:\ testwpf\folder.但是我可以看到在源的bin\release文件夹中创建的安装.

知道为什么它没有将文件部署到指定的PublishUrl?

msbuild clickonce

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

使用MSBUILD和maxcpucount选项的问题

我在4核机器上使用MsBuild.我给下面的命令行来构建4个项目属于大VC++所得溶液(超过4个项目全部没有相互依赖).我正在使用Visual Studio 2008.

为了加快构建时间,我试图利用这些maxcpucount选项,但似乎无法正常工作.我期待每个核心将构建我在命令行提供的4个项目中的每个项目.不幸的是,我测量了建造的时间,有或没有maxcpucount选项,我有相同的确切结果.

C:\WINDOWS\Microsoft.NET\Framework\v3.5\msbuild.exe MyVCppSolution.sln 
     /t:ProjA;ProjB;ProjC;ProjD /m

你知道我在做错了什么吗?

就是"建立4个项目的MyVCppSolution.sln解一次"或者我应该手动运行4个进程的每个构建解决方案的单个项目多达4个正确的方式?

msbuild visual-studio-2008 parallel-builds

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

如何根据当前项目的目录名称从另一个项目列表生成MsBuild itemList?

我正在获取文件列表*.config并将它们复制到目录列表中.这些目录是相对于C:\branches\具有名称的路径,然后是name.UnitTest.

所以副本看起来像没有重构/批处理:

<Target Name="CopyClientConfigs">

<ItemGroup>
    <ClientConfigDestinations Include="$(LocalSourcePath)\Module1\Module1.UnitTest\;
    $(LocalSourcePath)\Module2\Module2.UnitTest\;
    $(LocalSourcePath)\CommonControls\Module3\Module3.UnitTest\;
    $(LocalSourcePath)\Administration\Module4\Module4.UnitTest\;
    $(LocalSourcePath)\IndividualControls\Configuration\Module5\Module5.UnitTest\" />
    <ClientConfigs
    Include="$(ClientConfigPath)\*.config"
    Exclude="$(ClientConfigPath)\P*.config" >
    </ClientConfigs>
</ItemGroup>
<Copy
        SourceFiles="@(ClientConfigs)"
        DestinationFolder="%(ClientConfigDestinations.FullPath)"
        />
Run Code Online (Sandbox Code Playgroud)

我想要的是能够使用这个ItemGroup

<ItemGroup>
<MyModules Include="$(LocalSourcePath)\Module1;
    $(LocalSourcePath)\Module2;
    $(LocalSourcePath)\CommonControls\Module3;
    $(LocalSourcePath)\Administration\Module4;
    $(LocalSourcePath)\IndividualControls\Configuration\Module5"
/>          
Run Code Online (Sandbox Code Playgroud)

所以任务就像

Copy
        SourceFiles="@(ClientConfigs)"
        DestinationFolder="%(ClientConfigDestinations.FullPath)\*.UnitTest\"
        />
Run Code Online (Sandbox Code Playgroud)

或更好

Copy
        SourceFiles="@(ClientConfigs)"
        DestinationFolder="%(ClientConfigDestinations.FullPath)\%(ClientConfigDestinations.NameOnly).UnitTest\"
        />
Run Code Online (Sandbox Code Playgroud)

如何重构或正确批量操作?

msbuild

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