我正在使用Visual Studio 2015的Web Deploy功能将我的Type Script SPA项目部署到我的登台服务器。
我希望部署过程将一些特定于部署的文件从项目的/ Deployment文件夹复制(并重命名)到项目的其他特定位置。
一个这样的例子是:
[project_root] /Deployment/index.remote.debug.html ---> [project_root] /index.html
我设法使用我的发布配置文件(.pubxml)中的以下部分实现了这一点:
<Target Name="index_html">
<ItemGroup>
<_CustomFiles Include="Deployment/index.remote.debug.html" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>index.html</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<Target Name="extractor_config">
<ItemGroup>
<_CustomFiles Include="Deployment/extractor.config.remote.debug.js" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>extractor.config.js</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
index_html;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForPackageDependsOn>
extractor_config;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
但这仅适用于使用&#39;文件系统&#39;发布到文件系统的情况。选项。 使用&#39; Web Deploy&#39;发布到我的登台服务器时选项,我认为没有效果。 该应用程序已正确部署,但各个文件无法复制/重命名。
Visual Studio输出中也没有与此类Web部署相关的错误消息。
如果我以非管理员或管理员身份部署,则没有任何区别。
有谁知道,问题出在哪里?
关于MSBuild,我是一个完全的外行,这是我第一次遇到。我只是在其他人的在线体验的帮助下把它放在一起。
答案 0 :(得分:9)
您需要一个名称略有不同的元素。你有:
<CopyAllFilesToSingleFolderForPackageDependsOn>
index_html;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForPackageDependsOn>
extractor_config;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
尝试使用几乎相同的部分但使用此标记:
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
注意它是ForMsdeploy而不是ForPackage
答案 1 :(得分:3)
除了Rhyous的出色答案外,请注意MS docs表示您应该同时拥有CopyAllFilesToSingleFolderForPackageDependsOn
和CopyAllFilesToSingleFolderForMsdeployDependsOn
,例如
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
我已经通过编辑项目文件来使它起作用,但是引用的文档已在发布配置文件中进行了此编辑,我想这样更有效。