我正在使用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
我希望有一个脚本可以停止某个Windows服务,构建或重建解决方案,并在构建过程完成后运行该服务.
我应该使用Msbuild吗?或者还有其他方法吗?
我在构建我的解决方案时遇到了一个问题(Hardcopy.sln).这个解决方案包含许多其他模块,每个模块都将它们的输出定向到bin/debug /文件夹.在整个解决方案构建期间.我想将每个模块的输出重定向到不同的位置.如何做同样的事情.我正在使用MSbuild实用程序在我的nant脚本中构建解决方案.
我想在Nant中使用Msbuild实用程序来实现它有任何出路:
谢谢Rajesh
我必须压缩我的文件夹和子文件夹使用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文件中的特定子文件夹中.
我错过了什么,请有人帮忙.
我正在尝试以编程方式将导入任务添加到.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的一些性能摘要输出.结果如下所示:
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秒.我在网上看到的这些摘要的任何示例都表明,任务和目标的总时间是相同的.
完全愚蠢的问题,但我正在编写我的第一个ASP.NET C#Web表单应用程序,有时我只能编写一个更改并将其保存在Visual Studio中,它只是花花公子,但其他时候似乎我必须重建项目为更改生效.
谁能告诉我重建需要满足哪些条件?
谢谢!
汤姆
我有一个在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?
我在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个正确的方式?
我正在获取文件列表*.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 ×10
asp.net ×2
.net ×1
automation ×1
c# ×1
c#-4.0 ×1
clickonce ×1
debugging ×1
fileupdate ×1
msbuild-task ×1
web-config ×1