在 Visual Studio 中,我正在创建一个用于部署的构建后事件
md "$(SolutionDir)Deploy\bin"
它在我的解决方案中的 Deploy 文件夹中创建了 bin 文件夹。
如何将其指向某个远程计算机(我有 Web 服务器的位置)中的文件夹?
$(SolutionDir)
到远程机器上的其他文件夹?
你可能看起来很简单。:) 这是我第一次尝试这些东西。
谢谢
在 Visual Studio 中,我正在创建一个用于部署的构建后事件
md "$(SolutionDir)Deploy\bin"
它在我的解决方案中的 Deploy 文件夹中创建了 bin 文件夹。
如何将其指向某个远程计算机(我有 Web 服务器的位置)中的文件夹?
$(SolutionDir)
到远程机器上的其他文件夹?
你可能看起来很简单。:) 这是我第一次尝试这些东西。
谢谢
最简单的方法是替换$(SolutionDir)
为\\server\share
作为替代方案,我喜欢保持我的 .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>