visual-studio-2013 - Visual Studio 2013 构建和发布

标签 visual-studio-2013 build msbuild publish msdeploy

我在 VS 2013 中混合了 Web 和 Windows 项目。我有一个构建所有项目的解决方案。出于测试目的,我想自动将一些 Web 项目部署到本地文件夹中。我可以手动执行此操作,右键单击菜单并选择发布...

我创建的发布配置文件看起来像

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>$(MSBuildThisFileDirectory)..\..\bin\PublishFolder\</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

我可以使用 msbuild as 从命令行发布

msbuild C:\work\Source\AppManager\SereverManager.csproj  /p:DeployOnBuild=true /p:PublishProfile=Local 

这也给了我设计的结果。

我想做的是结合项目构建和发布。这意味着我想在每次构建项目时自动部署。

我尝试设置批处理文件并从构建后事件调用 msbuild,但这会导致 VS 卡住,甚至不确定这是否是正确的方法。是否可以修改我的csproj文件,以便在每次构建项目时发布?

最佳答案

是的,这绝对有可能。只需将以下 XML 添加到您的 ServerManager.csproj 文件。

  <PropertyGroup>
    <DeployOnBuild>true</DeployOnBuild>
    <PublishProfile>Local</PublishProfile>
  </PropertyGroup>

更新时间:2017-02-13

实际测试此解决方案后,我发现 Yusuf 是正确的,并且仅当我在 MSBuild.exe 调用上显式设置 DeployOnBuildPublishProfile MSBuild 属性时,部署才有效。

>"c:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild" /p:DeployOnBuild=true /p:PublishProfile=Local

在 .csproj 中设置属性通常没有问题。 DeployOnBuild 属性似乎很特殊。不确定这是错误还是故意的,但在项目文件中设置它或引用的目标文件在构建中的某处被覆盖。只有当您通过将其设置为 MSBuild.exe 调用上的标志将其定义为全局 MSBuild 属性时,它才会受到尊重。

一旦我发现了这一点,我就找到了一个可行的替代解决方案。将属性传递给项目中的第二个 MSBuild 调用:

<Target Name="AfterBuild">
  <MSBuild Condition="'$(DeployOnBuild)'!='true'" Projects="$(MSBuildProjectFullPath)" Properties="DeployOnBuild=true;PublishProfile=Local;BuildingInsideVisualStudio=False"/>
</Target>

现在无论您是在 VS 中构建还是从命令行构建,它都会自动部署。

关于visual-studio-2013 - Visual Studio 2013 构建和发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816354/

相关文章:

.net - 使用 WIX 时删除单元测试 dll 文件

azure - Visual Studio 2013 和 Azure Web 应用程序

c# - 在 Visual Studio 2013 的应用程序中运行应用程序?

c++ - 编写 scons 脚本来处理许多子目录中文件的编译

linux - 如何构建和安装 GLFW 3 并在 Linux 项目中使用它

tfs - 警告无法解析构建服务器上的 Moles dll

visual-studio-2013 - MVC 5 - 预编译 View 仅适用于命令提示符

c++ - 错误 C1090 : PDB API call failed, 错误代码 '0':'

c++ - ArUco项目从头开始

visual-studio-2010 - 更改 csproj 文件中的 PublishUrl 属性