Web部署将文件从放置位置复制到项目

时间:2012-08-01 12:33:42

标签: webdeploy

我的解决方案中有一个控制台项目。 现在我希望使用Web部署将该项目的exe添加到我的主项目部署之后。 我怎样才能做到这一点? 问候, 高塔姆

1 个答案:

答案 0 :(得分:2)

有两种高级解决方案:

选项1:将文件复制到App_Data

您可以将exe作为post build事件的一部分或作为下面脚本的一部分复制到App_Data文件夹中。这是你的选择。

既然它存在,我们还有另一个问题。 WPP仅包括部署时属于项目一部分的文件。要解决此问题,您可以使用以下内容为Web应用程序的根目录创建WebProjectName.wpp.targets文件:

<Project>
    <PropertyGroup>
        <BeforeAddContentPathToSourceManifest>
            $(BeforeAddContentPathToSourceManifest);
            IncludeExeInDeployment;
        </BeforeAddContentPathToSourceManifest>
    </PropertyGroup>

    <Target Name="IncludeExeInDeployment">
        <Copy SourceFiles="$(WebPublishPipelineProjectDirectory)\App_Data\Console\*" 
              TargetFolder="$(WPPAllFilesInSingleFolder)\App_Data\Console" />
    </Target>
</Project>

(您可以轻松跳过临时步骤并将exe的原始主页复制到$(WPPAllFilesInSingleFolder)文件夹中)

选项2:将exe作为单独的提供者包含

这需要对msdeploy有更多的了解,但是您可以选择在目标服务器上的任何位置部署exe。

基本上,它涉及在部署中添加额外的dirPath提供程序。再次,在根目录中添加一个wpp.targets文件:

<Project>
    <PropertyGroup>
        <AfterAddContentPathToSourceManifest>
            $(AfterAddContentPathToSourceManifest);
            IncludeConsoleAppInDeployment;
        </AfterAddContentPathToSourceManifest>
    </PropertyGroup>

    <Target Name="IncludeConsoleAppInDeployment">
        <ItemGroup>
            <MsDeploySourceManifest Include="dirPath">
                <Path>full path to console directory</Path>
            </MsDeploySourceManifest>
        </ItemGroup>
    </Target>
</Project>

您还需要替换pubxml中的路径以指定exe在远端的位置:

<ItemGroup>
    <MsDeploySetParameters Include="ConsoleAppPath">
        <Kind>ProviderPath</Kind>
        <Scope>dirPath</Scope>
        <Match>regex that matches console directory</Match>
        <Value>Path to console application on remote server</Value>
    </MsDeploySetParameters>
</ItemGroup>