Visual Studio 2012一键式发布发布所有文件(不仅仅是更新)

时间:2013-11-20 18:26:12

标签: asp.net-mvc visual-studio asp.net-mvc-4 visual-studio-2012 publish

根据Visual Studio中的单击发布documentation

  

首次发布时,运行应用程序所需的所有文件都将复制到托管服务提供商。发布更新时,仅复制更改的文件。

在我们的环境中(Visual Studio 2012中的ASP.NET MVC 4,如果它很重要),如果我是第一个发布Web应用程序的人,则会发布所有文件。如果我进行更新然后再次发布,则只发布更新。

到目前为止,非常好。

但是,如果其他开发人员随后发布,则会发布所有文件(包括未更改的文件)。他们可以进行更新和发布,只发布更改。但是如果我再次发布,所有文件(包括未更改的文件)都会被发布。

基本上,每当项目由最近发布的人发布时,所有文件(包括未更改的文件)都会发布。

  1. 这种行为是出于某种原因是故意的吗?
  2. 有没有办法阻止它(所以只发布更新,无论谁发布)?

1 个答案:

答案 0 :(得分:1)

带有exchange的Twitter Sayed让我a blog post向他提供了解决Visual Studio 2012及更高版本问题的方法(遗憾的是,不支持2010年)。< / p>

确定发布过程将上传哪些文件的默认方法使用文件时间戳,无论出于何种原因,这会导致我们看到的问题。

有一种替代方法,它使用校验和而不是时间戳。要使用校验和方法,请在.csproj导入上方的Microsoft.WebApplication.targets文件中包含以下属性组:

<PropertyGroup>
    <MSDeployUseChecksum>true</MSDeployUseChecksum>
</PropertyGroup>

在计算和比较校验和时有一个短暂的延迟,但它比等待所有文件的发布要快得多。