VS2010 Web Publish文件系统部署的命令行版本

Cub*_*anX 45 command-line visual-studio-2010 msdeploy web-publishing msbuild-wpp

伙计们,

简而言之,我想复制这个对话框: 替代文字

这是一个Visual Studio 2010 ASP.Net MVC项目.如果我执行此命令,我将获得所需的所有文件,包括"C:\ ToDeploy"目录中的转换后的web.configs.

我想在命令行上复制它,以便我可以将它用于QA环境构建.

我已经在远程部署的命令行上看到了有关如何执行此操作的各种文章,但我只是想为文件系统部署执行此操作.

我知道我可以使用nAnt任务或rake脚本复制这个功能,但是我想用这个机制来做,所以我不重复自己.

我已经对此进行了一些调查,我发现了这些链接,但没有一个能够干净地解决它:

提前致谢!

Cub*_*anX 46

好的,终于搞清楚了.

您需要的命令行是:

msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False
Run Code Online (Sandbox Code Playgroud)

您可以通过outdir=c:\wherever\在/ p:部分中添加属性来更改项目输出的位置.

这将在以下位置创建输出:

path/to/your/webdirectory/obj/Debug/Package/PackageTmp/
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用您想要的任何方法从上面的目录中复制这些文件.

我已经将这一切都用作使用长鳍金枪鱼的红宝石耙任务.我试图完成所有这些,所以我实际上可以把它作为对项目的贡献.但如果有人想要之前的代码,请告诉我.

我发现的另一个问题是它将Tokenized Parameters放入Web.config中.如果您不需要该功能,请确保添加:

/p:AutoParameterizationWebConfigConnectionStrings=false
Run Code Online (Sandbox Code Playgroud)

  • 对于completness,OutDir属性必须以尾部斜杠结尾(否则MSBuild错误).所以你的建议应该是`outdir = c:\ wherever \`. (5认同)

zul*_*oda 11

我以为我会发布另一个我发现的解决方案,我已经更新了这个解决方案以包含一个日志文件.

这类似于从命令行发布Web应用程序,但只是清理并添加了日志文件.还查看原始来源http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

在Web应用程序项目的根目录中创建MSBuild_publish_site.bat(无论如何)

set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
set destPath=C:\Publish\MyWebBasedApp\

:: clear existing publish folder
RD /S /Q "%destPath%"

call %msBuildDir%\msbuild.exe  MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log

set msBuildDir=
set destPath=
Run Code Online (Sandbox Code Playgroud)

通过<Import Project=标记下添加以下xml来更新Web应用程序项目文件MyWebBasedApp.csproj

<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
    <MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" />

    <ItemGroup>
        <PublishFiles Include="$(_PackageTempDir)\**\*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="True" />
</Target>
Run Code Online (Sandbox Code Playgroud)

这对我来说比其他解决方案更好.

有关详细信息,请查看以下内容:

1)http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild

2)从命令行发布Web应用程序

3)通过命令行构建Visual Studio项目