我需要在部署过程中包含一个文件夹及其中的文件。此文件夹不是项目的一部分。此文件夹在构建服务器上创建。我不能在项目中包含这些文件。
我发现这个answer非常有帮助。
我编辑了我的Web应用程序csproj文件,并将其添加到文件的末尾
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>CustomCollectFiles;$(CopyAllFilesToSingleFolderForPackageDependsOn);</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>CustomCollectFiles;$(CopyAllFilesToSingleFolderForPackageDependsOn);</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="Workspace\build\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Workspace\build</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
它应包含文件夹Workspace\build
中的所有文件,并将其放在部署目录中的同一位置。
但不幸的是它没有用。我对msbuild不太满意,所以我想我在这里遗漏了一些东西。
答案 0 :(得分:1)
例如,假设您的文件位于名为build
的目录中,该目录与解决方案目录位于同一目录级别,您可以这样做:
<Target Name="AfterBuild">
<CreateItem Include="$(SolutionDir)..\build\**\*.*">
<Output TaskParameter="Include" ItemName="AdditionalFiles" />
</CreateItem>
<Copy SourceFiles="@(AdditionalFiles)" DestinationFolder="$(TargetDir)build" />
</Target>
每当构建解决方案时,这会将$(SolutionDir)..\build
中的这些文件复制到输出目录build
的{{1}}子目录中。修改$(TargetDir)build
掩码,Include
并构建目标名称以满足您的需求。
答案 1 :(得分:0)
请参阅http://sedodream.com/2012/10/09/VSWebPublishHowToIncludeFilesOutsideOfTheProjectToBePublished.aspx
这仅适用于文件部署(不是MSDeploy)。