我们有一个相当简单的基于Django的网站来进行CRUD操作.我一直在本地进行测试和开发,然后在测试完成后检查发布和数据库模式更改到实时服务器上.我们最近在发布某些类型的更改时遇到了问题.想象一下以下一系列事件:
其他网站如何处理这些问题?我的想法:
思考?
我期待为即将开展的项目实施每日构建.
但在此之前,我需要知道如何正确版本的程序集.
我有以下问题:
我有一个由BinaryFormatter序列化到磁盘的C#类,例如:
// Version 3.0
[Serializable]
public class Person
{
public string FullName;
[OptionalField(VersionAdded=2)]
public string NickName;
[OptionalField(VersionAdded=2)]
public DateTime BirthDate;
[OptionalField(VersionAdded=3)]
public int Weight;
}
Run Code Online (Sandbox Code Playgroud)
稍后,我想通过以下一个或多个来重构此类
- 更改其名称
- 更改其命名空间
- 移动到另一个程序集
据我所知,只有具有完全相同名称,命名空间和程序集名称的类可用时,才能对二进制文件进行反序列化.
我该如何解决这个问题?
是否可以将反序列化映射到不同的类名,命名空间和程序集,而不会破坏版本容错序列化?
我想用新创建的类来测试新的类型检查字节码验证器scalac.
scalac 当前输出版本49.0类文件,但新版本检查验证程序仅在版本51.0以后是必需的.
我试图用ProGuard(实际上将它们转换为版本50.0)来"预验证"这些类,但我不确定新的验证器是否会自动回退到旧的类型推理验证器.
如何将类文件转换为版本51.0(或者如何在加载版本50.0类文件时找出使用哪个验证程序)?
我试图找出如何强制浏览器重新下载.xap文件,如果新版本可用,但旧版本仍然在浏览器中缓存.
我见过另一个帖子: 你如何强制Firefox不缓存或重新下载Silverlight XAP文件?
最好的解决方案似乎是:
protected void Page_Load(object sender, EventArgs e)
{
var versionNumber = Assembly.GetExecutingAssembly().GetName().Version.ToString();
this.myApp.Source += "?" + versionNumber;
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有得到this.myApp部分.那是什么样的对象?我很抱歉重新开放,但我希望人们能够发布完整的解决方案.
谢谢
我最近一直在版本化我的产品(exe)并每次在assemblyinfo.cs中增加内部版本号.
效果很好,我的产品目前是1.5.xx版本,因此每次成功构建时增加4位数.
现在我有我的DLL也是我的应用程序的一部分.
什么人会建议如何版本这些?我应该将这些版本与我的exe版本相同,即1.5.xx,还是应该创建另一个不同的版本号?
这是我目前有点困惑的地方.
当我的产品功能增加时,我可以提高1.5到2.0,但这会留下我的dll?
任何关于版本控制的建议都将不胜感激
谢谢
从语义版本控制:
如果仅引入向后兼容的错误修复,则补丁版本Z(xyZ | x> 0)必须递增.错误修复被定义为修复错误行为的内部更改.
假设我有一个版本0.1.12的程序.如果我必须增加Y(0.Y.12),我应该将Z(0.2.Z)返回到0(变为0.2.0)还是保持不变(变为0.2.12)?
我试图通过从我的可执行文件(在这种情况下,.NET应用程序)中自动检索版本信息来删除应用程序发布过程中的另一个步骤.
到目前为止,我已经能够获得有限的NSIS知识,但我很快就知道这还不够.
第1步:在可执行文件中声明版本信息
在AssemblyInfo.cs中,我声明[assembly: AssemblyVersion("1.0.0.1")].这成功地使版本信息出现在已编译的可执行文件中(在"文件版本"和"产品版本"下).
第2步:从可执行文件中检索版本信息
根据关于"GetFileVersion"的这篇文章,导入"FileFunc.nsh"允许您从可执行文件中检索版本信息.
使用的代码:
Section
Var /GLOBAL version
${GetFileVersion} "C:\test.exe" $version
...
SectionEnd
Run Code Online (Sandbox Code Playgroud)
第3步:验证函数调用的内容
根据文档的5.1.7节,我应该能够在编译期间使用"!echo"命令打印到命令行.打印变量(或常量等)的内容之间的区别仍然让我困惑,所以我尝试了所有这四个选项:
!echo $version
!echo "$version"
!echo "${version}"
!echo ${version}
Run Code Online (Sandbox Code Playgroud)
这导致:
$version (InstallScript.nsi:15)
$version (InstallScript.nsi:16)
${version} (InstallScript.nsi:17)
${version} (InstallScript.nsi:18)
Run Code Online (Sandbox Code Playgroud)
第4步:声明安装程序元数据
根据4.8.3节,我应该可以通过VIProductVersion和添加安装程序元数据VIAddVersionKey.
VIProductVersion $version
VIAddVersionKey "FileVersion" "$version"
Run Code Online (Sandbox Code Playgroud)
在构建的安装程序中,这会将字符串"$ version"添加到指定的字段中.
ToString()在NSIS中是否有相同的东西?如何访问变量的内容?变量名的打印是否意味着它没有内容?如何验证是否GetFileVersion正确调用,正确执行并返回值?
关于Maven自动化项目版本控制,我有一个难以解决的案例,我希望我会根据您的经验和建议找到合适的解决方案.
问题是这样的:我们有一个巨大的mavenized java产品,它包含~200个非常相互依赖的不同项目.我们同意每个项目都应该独立开发,以便每个项目都有自己的生命周期.在开发阶段一切正常,没有问题.当我们为这些项目准备发布时,问题就出现了:因为手动更改的项目非常多,所以我们决定找到一个自动解决方案来解决发布过程.
先决条件是这些:我们都同意SVN视角的发布策略应该是这样的: - 所有开发都应该在SVN中继上执行,应该在分支上创建和维护发布.每个执行的版本都应自动创建一个标记.
来自MAVEN视角的策略是这样的: - 在发布项目之前,我们首先将主干复制到分支,以便控制对分支代码的项目维护.我们选择的版本控制系统是:Major.Minor.BuildNumber-SNAPSHOT(例如1.0.0-SNAPSHOT).分支代码时,我们希望通过递增MinorVersion来更改项目版本号(例如,trunk-1.0.0-SNAPSHOT将变为1.1.0-SNAPSHOT,并且将在新创建的分支上复制和发布1.0.0-SNAPSHOT ) - 当我们决定项目足够成熟以便发布时,我们通过使用maven-release-plugin(mvn release:clean release:prepare release:perform)发布它,以便我们的项目版本将从Major转换. Minor.BuildVersion-SNAPSHOT(例如1.0.0-SNAPSHOT)到Major.Minor.BuildVersion(例如1.0.0),然后将为下一个开发迭代做好准备,如:Major.Minor.BuildVersion + 1-SNAPSHOT(例如1.0. 1-SNAPSHOT)
我们面临的问题与项目版本控制有关.因此,在主干的开发阶段,所有项目都使用其依赖项的最新SNAPSHOT版本(mvn版本:use-latest-versions -DallowSnapshots = true -DupdateDependencies = true),但是当我们考虑是时候启动发布程序并准备分支代码,出现问题:我们开始分支
父POM
(mvn -B release:clean release:branch -DbranchName = $ {project.artifactId} _ $ {project.version} -Dusername = $ {username} -Dpassword = $ {passwd} -Dproject.rel.$ {groupId}: $ {projectId} = 1.0.0-SNAPSHOT -Dproject.dev.$ {groupId}:$ {projectId} = 1.1.0-SNAPSHOT)
MvcContrib.MVC3-ci和Mvc.Contrib NuGet包之间有什么区别?
我看到他们有不同的依赖关系-ci有更多的下载.我假设我想要-ci用于我的MVC3项目,但我该如何理解呢?-ci是什么意思?
versioning ×10
.net ×2
asp.net-mvc ×1
assemblyinfo ×1
automation ×1
branch ×1
build ×1
bytecode ×1
c# ×1
class ×1
deployment ×1
django ×1
java ×1
maven ×1
metadata ×1
nsis ×1
refactoring ×1
scala ×1
schema ×1
silverlight ×1
version ×1
xap ×1