从命令行和Web.config转换发布ASP.NET MVC 2应用程序

时间:2010-12-07 21:38:20

标签: asp.net-mvc deployment

美好的一天!

我在这里找到了这个解决方案:VS2010 Web Publish command line version of File System deploy

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
.\MyProject.csproj /p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OuputDir\

但似乎没有执行Web.config转换。

可能有更好的\更清洁的方式来复制“发布Web”VS2010对话框吗?

更新:标记的答案是执行发布的最短命令行,到目前为止我找到了。应用了Web.config转换,但连接字符串的处理方式不同,这里是description\workaround

3 个答案:

答案 0 :(得分:1)

摘自:http://ashwaniksharma.spaces.live.com/Blog/cns!AD160FFA5932F17E!206.entry

MSBuild .\MyProject.csproj /t:TransformWebConfig;/p:Configuration=Release;DeployOnBuild=True;PackageAsSingleFile=False;outdir=c:\_OuputDir\

答案 1 :(得分:1)

这可能有效(我发现here):

msbuild solution.sln /p:Configuration=Release;DeployOnBuild=true;DeployTarget=Package;_PackageTempDir=..\publish

然而,当我尝试运行它时,它给了我以下错误(我还在努力解决):

  

C:\ [path] \ [config] \ csautoparameterize \ original \ web.config(40):错误ASPCONFIG:使用注册为allowDefinition =' MachineToApplication'的部分是错误的。超出应用水平。此错误可能是由于虚拟目录未在IIS中配置为应用程序。

答案 2 :(得分:1)

使用 Web.config转换 CCNET 的解决方案:

<tasks>
    <msbuild>
        <executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
        <workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
        <projectFile>GertakariakMSWeb2.vbproj</projectFile>
        <targets>Build</targets>
        <timeout>600</timeout>
        <logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
        <buildArgs>
            /noconsolelogger /p:Configuration=Release /v:diag
            /p:DeployOnBuild=true
            /p:AutoParameterizationWebConfigConnectionStrings=false
            /p:DeployTarget=Package
            /p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
        </buildArgs>
        </msbuild>
</tasks>