0

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

4

1 回答 1

2

对此有两种高级解决方案:

选项 1:将文件复制到 App_Data

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

现在它在那里,我们有另一个问题。WPP 仅包含在部署时属于项目一部分的文件。为了解决这个问题,您可以WebProjectName.wpp.targets在 Web 应用程序的根目录中创建一个文件,其中包含以下内容:

<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>
于 2012-10-01T00:52:32.667 回答