Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2012 Visual Studio 2012 Web Deploy发布预览显示所有已更改的文件_Visual Studio 2012_Preview_Web Publishing_One Click Web Publishing - Fatal编程技术网

Visual studio 2012 Visual Studio 2012 Web Deploy发布预览显示所有已更改的文件

Visual studio 2012 Visual Studio 2012 Web Deploy发布预览显示所有已更改的文件,visual-studio-2012,preview,web-publishing,one-click-web-publishing,Visual Studio 2012,Preview,Web Publishing,One Click Web Publishing,当您是唯一使用代码库的开发人员时,Visual Studio 2012中Web Publishing对话框的预览窗格工作得非常好(请参见下面的示例): 然而,当多个开发人员使用它时,它似乎会崩溃。它似乎使用文件时间戳作为比较的手段,因此,即使您从TFS获得了最新的时间戳,您的时间戳也不同于其他人在服务器上发布的文件,因此它在列表中包含了许多虚拟更改(一旦您钻入,差异的两个窗格是相同的) 有没有人想出这个方案的解决方案?到目前为止,没有。我注意到了Team Foundation Server和通

当您是唯一使用代码库的开发人员时,Visual Studio 2012中Web Publishing对话框的预览窗格工作得非常好(请参见下面的示例):

然而,当多个开发人员使用它时,它似乎会崩溃。它似乎使用文件时间戳作为比较的手段,因此,即使您从TFS获得了最新的时间戳,您的时间戳也不同于其他人在服务器上发布的文件,因此它在列表中包含了许多虚拟更改(一旦您钻入,差异的两个窗格是相同的)


有没有人想出这个方案的解决方案?

到目前为止,没有。我注意到了Team Foundation Server和通过文件系统发布的问题。问题源于TFS用来跟踪给定概要文件上次发布内容的XML文件。这些文件位于Project\Properties\Publish Profiles文件夹下。这些文件会自动添加到项目中,几乎不可能保存在TFS之外。当团队成员注意到他们发布的内容不一定与他们机器上的内容匹配时,他们会删除并重新创建一个新的发布配置文件。完全不是一个可伸缩的解决方案,但如果你谷歌visual studio发布不起作用,你会遇到很多人有同样的问题

对于那些使用较新的Visual Studio版本(2013或更高版本)的人来说,最新答案可能会很有用。指定应使用文件校验和而不是时间戳:

1) 打开发布配置文件xml文件:
\\Properties\PublishProfiles\.pubxml

2) 在属性组中添加
true
。最终结果应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>

    <MSDeployUseChecksum>true</MSDeployUseChecksum>

    <!-- other configuration here -->
  </PropertyGroup>
  <ItemGroup>
    <MSDeployParameterValue Include="$(DeployParameterPrefix)MdwAutomaticTestingModels-Web.config Connection String">
      <UpdateDestWebConfig>False</UpdateDestWebConfig>
    </MSDeployParameterValue>
  </ItemGroup>
</Project>

MSDeploy
真的
假的

可以找到更多详细信息。

很有趣。因为我发布了这篇文章,所以我探索了文件系统发布选项,在这方面它似乎更智能。它完全忽略服务器时间戳;相反,它会将.pubxml.user文件中的时间戳与文件的当前时间戳进行比较,如果文件较新,则进行发布。在这个问题上似乎是YMMV。我在Visual Studio的用户声音中添加了这个想法:。去投票吧!谢谢@Alexei,你的解决方案真的很有效。应该将其标记为答案,以便其他人从中受益。我投了赞成票。