【问题标题】:Copy css/js files with msdeploy on one-click deployment一键部署使用 msdeploy 复制 css/js 文件
【发布时间】:2015-10-22 14:18:21
【问题描述】:
我使用 Visual Studio 中的一键式部署部署了我的 ASP.NET MVC 5 应用程序。
同时我需要将一些 css/js 文件复制到一个集中的文件夹中,以便可以在我的解决方案的不同应用程序中使用它们。
似乎 msdeploy 有some options 来解决这个问题。但是我可以在哪里/如何使用 Visual Studio 2015 将参数传递给 msdeploy?
【问题讨论】:
标签:
asp.net
asp.net-mvc
visual-studio
visual-studio-2015
msdeploy
【解决方案1】:
其中一个选项是:
我们需要一些继承Task的类。它会复制文件。
public class CopyFilesToFolder : Task
{
[Required]
public string FolderPathForSource { get; set; }
[Required]
public string OutputFolder { get; set; }
public override bool Execute()
{
//Do copy here
return true;
}
}
例如 YouProject 就是你想要部署的。
我们需要编辑 YourProject.csproj 文件:
使用 CopyFilesToFolder 类注册 dll 并为 MsDeploy 添加目标
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<UsingTask TaskName="CopyFilesToFolder" AssemblyFile="..\..\pathTodll\dllWithCopyFilesToFolderClass.dll">
</UsingTask>
<Target Name="CopyFilesToFolderForPublish">
<CopyFilesToFolder FolderPathForSource="$(ProjectDir)\\$(_PackageTempDir)\\Content\\" OutputFolder="C:\\Deploy\\Content\\">
</CopyFilesToFolder>
</Target>
<!-- ... -->
</Project>
如您所见,我们可以将参数传递给我们之前创建的类。
最后,在 YourProject.pubxml 文件中,我们告诉 MsDeploy,当他将打包所需的所有文件放在一起时,执行 CopyFilesToFolderForPublish 目标
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Other properties -->
<OnAfterCopyAllFilesToSingleFolderForPackage>CopyFilesToFolderForPublish;</OnAfterCopyAllFilesToSingleFolderForPackage>
</PropertyGroup>
</Project>