2013-05-03 45 views
0

我的应用程序文件夹中有几个文件。我想用旧版本替换旧版本,除了1个文件(x)。无论版本如何,我都希望x被替换。目前我有“DetectNewerInstalledVersion = true”和“RemovePreviousVersions = true”,肯定对x没有效果。有什么建议么?我不介意是否必须替换所有文件始终不考虑版本来实现我想要的。这个怎么做?部署项目属性

+0

这些资源文件是项目的一部分吗?你正在部署一个干净的版本还是只是试图改变平面文件? – evanmcdonnal 2013-05-03 16:15:27

+0

您是否已将AssemblyInfo.cs配置为自动递增每个构建上文件的内部版本号?这是编译器确定哪个文件更新的唯一方法。如果两个文件的版本始终为1.0.0.0,则新文件可能不会被复制。 //您可以指定所有值,或者您可以默认构建版本号和修订版号 // [assembly:AssemblyVersion(“1.0。*”)] [assembly:AssemblyVersion(“1.0.0.0”)] [assembly :AssemblyFileVersion(“1.0.0.0”)] – 2013-05-04 12:58:54

回答

0

如果这些文件中的任何一个是二进制文件,您应该从不部署混合二进制文件。即;从build 3中获取commonlibrary1.dll并将其放入您当前拥有build 1的二进制文件的prod环境中。这是非常糟糕的做法。你应该部署一个干净的戏法。

要完成文件复制,只需更改VS中的每个文件属性(这会更改项目文件中的文件属性)。右键单击该文件,选择属性,将“复制到输出目录”设置为“复制如果更新”,而不是x。对于x将该属性设置为“始终复制”。

当您部署时只删除服务器上的内容并将其替换为您的构建输出目录。如果那个输出目录没有切割它(意思是你必须手动移动一堆废话),我会专注于改进构建脚本。

+0

你是在谈论“文件安装性能”?我没有看到“复制到输出目录” – 2013-05-03 19:46:14

+0

@JohnRyann对不起,我的回应可能没有用。这是VS2010中的项目本身,通常适用于资源文件。所有文件都有“复制到输出目录”属性。如果你正在讨论的是一个dll或者是一个构建的结果,它就不会在那里(移动这些文件应该通过构建脚本来完成)。你在使用安装程序吗?你把这些文件放在服务器上的过程是什么? – evanmcdonnal 2013-05-03 20:04:06