0

在 Visual Studio 中,我正在创建一个用于部署的构建后事件

md "$(SolutionDir)Deploy\bin"

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

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

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

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

谢谢

4

2 回答 2

2

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

于 2013-04-19T17:04:48.780 回答
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>
于 2013-04-19T08:14:50.720 回答