art*_*olk 28 msbuild visual-studio-2010 asp.net-mvc-2
美好的一天!
我希望能够使用VS2010 Publish对话框和命令行构建ASP.NET MVC 2项目.
对于命令行,我得到以下工作:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe .\SolutionFolder\MyProject.csproj /p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OutputFolder\
Run Code Online (Sandbox Code Playgroud)
我没有应用Web.config转换的唯一问题(但是添加到WebDeploy包).我不使用WebDeploy.有没有办法应用Web.config转换?
谢谢!
Dio*_*ogo 18
这是另一种方法,它使用msbuild转换Web.config文件:
http://sedodream.com/2010/04/26/ConfigTransformationsOutsideOfWebAppBuilds.aspx
在我的测试中,结果更好.基本上,您创建一个项目文件以仅执行TransformXML任务:
<Project ToolsVersion="4.0" DefaultTargets="Demo" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="TransformXml"
AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
<Target Name="Demo">
<TransformXml Source="app.config"
Transform="Transform.xml"
Destination="app.prod.config"/>
</Target>
</Project>
Run Code Online (Sandbox Code Playgroud)
保存项目文件,然后应用转换,运行以下命令:
msbuild trans.proj/t:Demo
其中trans.proj是项目文件的名称,Demo是任务目标的名称.
我认为值得一提的是,您还可以使用PowerShell使用Visual Studio正在使用的DLL:Microsoft.Web.XmlTransform.dll
PowerShell脚本,请参阅:Web.Config在Microsoft MSBuild之外进行转换?
要加载DLL而不是复制,我喜欢这样(所以你看到在哪里找到这个DLL,至少在我工作的场景中我们必须查找这些位置):
if (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll") {
Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll"
} elseif (Test-Path "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll") {
Add-Type -LiteralPath "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll"
} else {
throw [System.IO.FileNotFoundException] "Microsoft.Web.XmlTransform.dll not found."
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11163 次 |
| 最近记录: |