当您是唯一的代码库开发人员时,Visual Studio 2012 中 Web Publishing 对话框的 Preview 窗格可以很好地工作(参见下面的示例):
但是,当多个开发人员使用它时,它似乎会下降。它似乎使用文件时间戳作为比较的手段,所以即使你从 TFS 获得了最新的,你的时间戳也不同于其他人在服务器上发布的文件,所以它在列表中包含了很多幻像变化(深入了解后,差异的两个窗格是相同的)。
有没有人想出解决这种情况的方法?
当您是唯一的代码库开发人员时,Visual Studio 2012 中 Web Publishing 对话框的 Preview 窗格可以很好地工作(参见下面的示例):
但是,当多个开发人员使用它时,它似乎会下降。它似乎使用文件时间戳作为比较的手段,所以即使你从 TFS 获得了最新的,你的时间戳也不同于其他人在服务器上发布的文件,所以它在列表中包含了很多幻像变化(深入了解后,差异的两个窗格是相同的)。
有没有人想出解决这种情况的方法?
较晚的答案可能对使用较新 Visual Studio 版本(2013 或更高版本)的人有用。指定应该使用文件的校验和而不是时间戳:
1) 打开发布配置文件 xml 文件:\<web project>\Properties\PublishProfiles\<publishprofile>.pubxml
2)<MSDeployUseChecksum>true</MSDeployUseChecksum>
在属性组内添加。最终结果应如下所示:
<?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>
更多细节可以在这里找到。
到目前为止,没有。我注意到 Team Foundation Server 和通过文件系统发布存在同样的问题。问题源于 TFS 用于跟踪给定配置文件的最后发布内容的 XML 文件。这些文件位于 Project\Properties\Publish Profiles 文件夹下。这些文件会自动添加到项目中,几乎不可能远离 TFS。当团队成员注意到他们发布的内容不一定与他们机器上的内容匹配时,他们会删除并重新创建新的发布配置文件。完全不是一个可扩展的解决方案,但如果你的谷歌视觉工作室发布不起作用,你会遇到很多人有同样的问题。