【问题标题】:MSBuild arguments to generate files生成文件的 MSBuild 参数
【发布时间】:2018-11-02 20:05:02
【问题描述】:

注意事项: Visual Studio 2017 解决方案,包含一个 MVC Web 应用程序和几个其他项目,Web 应用程序项目并未引用所有这些项目。到目前为止,我一直在使用 VS 直接发布到测试服务器,但是我已经将东西移到了 VSTS 中,并进行了构建和发布定义设置,但还没有工作。

我想要实现的是让我的(托管)VSTS 构建代理生成已发布的文件,我的(本地)发布代理可以简单地复制到其目标目的地。因此,我尝试从 VS 命令行本地测试 MS 构建步骤,以便生成文件并记下它们所在的路径。也许我让这件事变得更复杂了?

这些选项将创建单个压缩存档及其关联文件,并将其放入 artefact staging 目录。有没有办法简单地发布文件而不将它们放入存档中 - 直接放入人工制品暂存目录?

Visual Studio 构建

MSBuild 参数

/t:My_MVCWeb_Project_Name /p:DeployOnBuild=true 
/p:WebPublishMethod=FileSystem /p:PackageAsSingleFile=true 
/p:SkipInvalidConfigurations=true 
/p:PackageLocation="$(build.artifactstagingdirectory)\\"

在我使用本地代理的版本中), 我有一个“复制文件”任务,目标是 IIS 应用程序所在的 unc 路径。但是,这只会复制存档。那么我怎样才能像使用发布配置文件一样将文件直接复制到应用目录?

[update2 - 仍在生成 zip 文件]

MSBuild my_solution_name /t:"my_project_name" /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:SkipInvalidConfigurations=true /p:PackageLocation="D:\temp\local-dev-build-dir"

[更新 3] 从命令行尝试这些作为测试,但没有生成任何内容

msbuild D:\app_dir>MSBuild my_solution_name.sln /t:"my_web_proj_name" /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="D:\temp\app_build_dir\\" 
/p:DeployDefaultTarget=WebPublish  

【问题讨论】:

    标签: msbuild azure-devops azure-pipelines


    【解决方案1】:

    改用这些 MSBuild 参数:

    /p:SkipInvalidConfigurations=true /p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\" /p:DeployDefaultTarget=WebPublish
    

    【讨论】:

    • 参见上面的 [ update 3 ],从命令行尝试但没有产生任何结果
    • 是网站还是网络应用项目?可以分享一下 OneDrive 上的示例项目吗?
    • 它是一个 MVC5 Web 应用程序 - 在该项目引用的其他项目的解决方案中。请参阅上面的更新说明。
    • 您能否在 OneDrive 上分享示例项目和详细构建日志(将 system.debug 变量设置为 true)?
    • @starianchen-MSFT 我的解决方案是控制台应用程序和 Web api 的组合(在同一解决方案下) /p:DeployOnBuild=True /p:DeployDefaultTarget=WebPublish /p:WebPublishMethod=FileSystem /p: DeleteExistingFiles=True /p:msbuildArchitecture=x64 /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\" 正在使用上述构建参数,但我只在 drop 中查看非 web api 项目
    【解决方案2】:

    删除

    /p:PackageAsSingleFile=true 
    

    或者改成:

    /p:PackageAsSingleFile=false 
    

    这导致文件被压缩。

    您可能还需要将发布方式切换为打包:

    /p:OutDir=$(build.artifactstagingdirectory) 
    /p:WebPublishMethod=Package
    

    【讨论】:

    • 我现在通过在我的本地 git 存储库中的命令行运行 MSBuild 来手动测试它。我将 PackageLocation 设置为本地文件夹,它仍在生成一个 zip 文件
    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 2010-10-20
    • 2011-04-07
    • 1970-01-01
    • 2019-08-24
    • 2017-07-20
    • 2010-11-02
    相关资源
    最近更新 更多