Visual Studio Post构建命令行部署

时间:2013-04-19 06:33:12

标签: visual-studio msbuild web-deployment

在Visual Studio中,我正在使用

创建部署后构建事件
md "$(SolutionDir)Deploy\bin"

在我的解决方案中创建了Deploy文件夹中的bin文件夹。

如何将其指向某个远程计算机(我有Web服务器)的文件夹?

$(SolutionDir)到远程计算机上的其他文件夹?

你可能看起来很简单。 :)这是我第一次尝试这个东西。

由于

2 个答案:

答案 0 :(得分:2)

最简单的方法是将$(SolutionDir)替换为\\server\share

答案 1 :(得分:1)

作为替代方案,我喜欢保持我的.sln和.csproj文件“干净”。

然后使用第二个(迷你).msbuild(只是一个.xml文件)来构建.sln,然后将这些复制类型事件作为第二个动作。

这是一个基本的例子:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="AllTargetsWrapper">

    <PropertyGroup>
        <WorkingCheckout>.</WorkingCheckout>
        <WorkingOutputs>m:\working\outputs</WorkingOutputs>
    </PropertyGroup>

    <Target Name="AllTargetsWrapper">
        <CallTarget Targets="Clean" />
        <CallTarget Targets="Build" />
        <CallTarget Targets="CopyItUp" />
    </Target>

    <Target Name="Clean">

        <RemoveDir Directories="$(WorkingOutputs)" />
        <MakeDir Directories="$(WorkingOutputs)" />

        <Message Text="Cleaning done" />

    </Target>

    <Target Name="Build">
        <MSBuild Projects="$(WorkingCheckout)\MySolution.sln" Targets="Build" Properties="Configuration=$(Configuration)">
            <Output TaskParameter="TargetOutputs" ItemName="TargetOutputsItemName"/>
        </MSBuild>
        <Message Text="Build completed" />
    </Target>

    <!--  -->
    <Target Name="CopyItUp" >

        <ItemGroup>
            <MyExcludeFiles Include="$(WorkingCheckout)\**\SuperSecretStuff.txt" />
            <MyExcludeFiles Include="$(WorkingCheckout)\**\SuperSecretStuff.doc" />
        </ItemGroup>

        <ItemGroup>
            <MyIncludeFiles Include="$(WorkingCheckout)\MyCsProject\bin\$(Configuration)\**\*.*" Exclude="@(MyExcludeFiles)"/>
        </ItemGroup>        


        <Copy
                SourceFiles="@(MyIncludeFiles)"
                DestinationFiles="@(MyIncludeFiles->'$(WorkingOutputs)\%(RecursiveDir)%(Filename)%(Extension)')"
        /> 

    </Target>

</Project>