在TFS上使用MsBuild生成部署包之前,请先将文件复制到源代码中



我使用TFS作为构建服务器,使用MsBuild构建解决方案并将其打包到web部署包中。

MSBuild参数:/p:CreatePackageOnPublish=true /p:DeployOnBuild=true /p:DeployTarget=Package

现在,我想在构建包之前将几个文件复制到源文件中,这样当部署到IIS时,它们将最终出现在App_Data-directory中。我想把它作为TFS构建的一部分,并创建了一个InvokeProcess操作,该操作调用xcopy并将文件复制到SourcesDirectory中,但它们没有出现在构建的zip包中。

我应该将文件复制到什么目录中,以及在构建过程中的位置?有更好的方法吗?我在考虑项目文件中的Post-Build事件,但我只希望它由特定的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="scriptmyApp.min-%(CurrentAssembly.Version).js" />
        <FilesForPackagingFromProject Include="%(JsFile.Identity)">
            <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
        </FilesForPackagingFromProject>
    </ItemGroup>
</Target>

如果我还记得的话,这对tfs构建不起作用,因为在此过程中没有执行CollectFilesFromContent,所以我在构建后事件中复制了这些文件:

if not '$(TeamFoundationServerUrl)' == '' (
    xcopy "$(ProjectDir)scriptmyApp.min-@(VersionNumber).js" "$(OutDir)_PublishedWebsites$(MSBuildProjectName)script"
)

相关内容

  • 没有找到相关文章

最新更新