将Umbraco安装为NuGet包时,只有umbraco文件夹包含在Visual Studio项目中,而不包含在umbraco_client文件夹中。原因是不应从Visual Studio引用umbraco_client文件夹的内容。但是在使用Web Deploy发布网站时,我需要部署umbraco_client文件夹。
一种解决方案是将umbraco_client文件夹包含在VS项目中。这个解决方案的缺点是通过NuGet升级Umbraco会变得烦人且容易出错。您必须记住将umbraco_client文件夹排除并重新包含在项目中。
那么有更好的方法吗?
答案 0 :(得分:1)
您可以将以下MSBuild脚本添加到.csproj文件中。
<Project>
...
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles"]]>
<ItemGroup>
<_umbraco_client_files Include="umbraco_client\**\*" />
<FilesForPackagingFromProject Include="%(_umbraco_client_files.Identity)"]]>
<DestinationRelativePath>umbraco_client\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>
如果您想自动完成将上述代码添加到所有新Umbraco项目中的过程,您可以创建自己的NuGet包。首先让Umbraco成为一个依赖。然后添加Build文件夹,然后添加.targets文件。在.targets文件中添加上面的代码。
有关MSBuild脚本的详细信息,请参阅此文章:http://blog.samstephens.co.nz/2010-10-18/msbuild-including-extra-files-multiple-builds/