在 TFS 上使用 MsBuild 构建部署包之前将文件复制到源代码中
Copying files into the source code before building a deploy package with MsBuild on TFS
我将 TFS 用作构建服务器,以使用 MsBuild 构建解决方案并将其打包到 Web 部署包中。
MSBuild 参数:/p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:DeployTarget=Package
现在我想在 构建包之前将几个文件复制到源文件 中,这样当部署到 IIS 时它们将在 App_Data-directory 中结束.我正在考虑将其作为 TFS 构建的一部分,并创建了一个调用 xcopy
并将文件复制到 SourcesDirectory 的 InvokeProcess 操作,但是它们没有出现在构建的 zip 包中。
我应该将文件复制到哪个目录,以及在构建过程中的什么位置?
有更好的方法吗?我在考虑项目文件中的 Post 构建事件,但是我只希望它是特定 TFS 构建的 运行,而不是所有构建。
我在我的项目文件中使用这个钩子部署特定的 js 版本化文件:
<!--Hook to deploy add files -->
<PropertyGroup>
<CollectFilesFromContentDependsOn>
AddFilesToDeploy;
$(CollectFilesFromContentDependsOn);
</CollectFilesFromContentDependsOn>
</PropertyGroup>
<!--Add files to deploy -->
<Target Name="AddFilesToDeploy">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="CurrentAssembly" />
</GetAssemblyIdentity>
<ItemGroup>
<JsFile Include="script\myApp.min-%(CurrentAssembly.Version).js" />
<FilesForPackagingFromProject Include="%(JsFile.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
如果我记得,这对 tfs 构建不起作用,因为在此过程中未执行 CollectFilesFromContent,所以我在 post 构建事件中复制了文件:
if not '$(TeamFoundationServerUrl)' == '' (
xcopy "$(ProjectDir)script\myApp.min-@(VersionNumber).js" "$(OutDir)_PublishedWebsites$(MSBuildProjectName)\script"
)
我将 TFS 用作构建服务器,以使用 MsBuild 构建解决方案并将其打包到 Web 部署包中。
MSBuild 参数:/p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:DeployTarget=Package
现在我想在 构建包之前将几个文件复制到源文件 中,这样当部署到 IIS 时它们将在 App_Data-directory 中结束.我正在考虑将其作为 TFS 构建的一部分,并创建了一个调用 xcopy
并将文件复制到 SourcesDirectory 的 InvokeProcess 操作,但是它们没有出现在构建的 zip 包中。
我应该将文件复制到哪个目录,以及在构建过程中的什么位置? 有更好的方法吗?我在考虑项目文件中的 Post 构建事件,但是我只希望它是特定 TFS 构建的 运行,而不是所有构建。
我在我的项目文件中使用这个钩子部署特定的 js 版本化文件:
<!--Hook to deploy add files -->
<PropertyGroup>
<CollectFilesFromContentDependsOn>
AddFilesToDeploy;
$(CollectFilesFromContentDependsOn);
</CollectFilesFromContentDependsOn>
</PropertyGroup>
<!--Add files to deploy -->
<Target Name="AddFilesToDeploy">
<GetAssemblyIdentity AssemblyFiles="$(TargetPath)">
<Output TaskParameter="Assemblies" ItemName="CurrentAssembly" />
</GetAssemblyIdentity>
<ItemGroup>
<JsFile Include="script\myApp.min-%(CurrentAssembly.Version).js" />
<FilesForPackagingFromProject Include="%(JsFile.Identity)">
<DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
如果我记得,这对 tfs 构建不起作用,因为在此过程中未执行 CollectFilesFromContent,所以我在 post 构建事件中复制了文件:
if not '$(TeamFoundationServerUrl)' == '' (
xcopy "$(ProjectDir)script\myApp.min-@(VersionNumber).js" "$(OutDir)_PublishedWebsites$(MSBuildProjectName)\script"
)