我的解决方案中有一个控制台项目。现在我希望该项目的 exe 应该使用 web 部署添加到我的主项目后部署中。我怎样才能做到这一点?问候,高塔姆
问问题
1192 次
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 回答