标签: versioning

建议在运行时测试iOS版本特定功能的方法

我正在使用针对5.0 SDK构建的应用程序来定位IOS 4.3和5.0,并且只有当应用程序在iOS5设备上运行时才想添加对iOS5中引入的Twitter功能的支持.在运行时可靠地测试这些OS功能的可用性而不会导致应用程序崩溃的推荐方法是什么?

我知道你在Objective-C中使用respondsToSelector来做到这一点,但它是如何在C#中完成的?

c# versioning iphone xamarin.ios ios

8
推荐指数
2
解决办法
2081
查看次数

如何让MSBuild在构建服务器上增加ClickOnce发布修订版本号?

我们有一个NAnt脚本,可以从CVS中检出,然后运行MSBuild来发布应用程序.问题是我们必须记住在Visual Studio中总是增加版本.

我们可以选择在发布时自动增加它,但是这会在下次检出时被删除,我宁愿不必让构建脚本检查项目文件.

有一个简单的方法吗?

.net versioning msbuild clickonce

8
推荐指数
2
解决办法
8515
查看次数

如何安全地更新实时网站

我们有一个相当简单的基于Django的网站来进行CRUD操作.我一直在本地进行测试和开发,然后在测试完成后检查发布和数据库模式更改到实时服务器上.我们最近在发布某些类型的更改时遇到了问题.想象一下以下一系列事件:

  1. 用户打开Web表单
  2. 网站已更新为需要此表单上的新字段
  3. 用户提交他们一直在处理的表单
  4. 服务器返回错误,因为它希望接收在步骤2中添加的新字段

其他网站如何处理这些问题?我的想法:

  • 在进行更新时使网站脱机.这并没有真正解决问题,因为用户可以在提交之前将网络表单打开无限长时间,但在一定时间之后,任何人都不可能提交表单.
  • 在非常低的流量时间进行自动更新.再次,这并没有真正解决问题,但我们的网站不是那么受欢迎,如果我们在3:00a做了更新,我怀疑会有很多用户.这种技术的一个问题是失败的自动更新.
  • 版本控制表单,以便服务器识别出正在提交旧表单并提供更加用户友好的响应.有自动化工具可以帮助解决这个问题吗?

思考?

versioning deployment django schema

7
推荐指数
1
解决办法
909
查看次数

如何重构.NET中序列化的类?

我有一个由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)

稍后,我想通过以下一个或多个来重构此类
- 更改其名称
- 更改其命名空间
- 移动到另一个程序集

据我所知,只有具有完全相同名称,命名空间和程序集名称的类可用时,才能对二进制文件进行反序列化.

我该如何解决这个问题?
是否可以将反序列化映射到不同的类名,命名空间和程序集,而不会破坏版本容错序列化

.net versioning refactoring serialization binaryformatter

7
推荐指数
1
解决办法
1253
查看次数

自动检索EXE文件版本以嵌入NSIS安装程序元数据

我试图通过从我的可执行文件(在这种情况下,.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正确调用,正确执行并返回值?

versioning metadata nsis

7
推荐指数
2
解决办法
4655
查看次数

使用ASP.NET Web API和实体框架进行API版本控制

我正在使用ASP.NET Web API,Code-First Entity Framework 5和SQL Server 2012开发REST API,我需要能够对API进行版本控制.我已经阅读了一些博客文章和文章,关于在URI或自定义HTTP标头中指示API版本,并使用自定义IHttpControllerSelector根据指定的版本选择不同的ApiControllers.这一切都有道理.

我正在努力弄清楚的是如何管理Web API层以外的版本控制的影响,特别是在Entity Framework中.如何在不破坏旧版本API的情况下改进我的DbContext?我也可以对DbContext进行版本控制吗?如果是这样,怎么样?

versioning rest entity-framework asp.net-web-api

7
推荐指数
1
解决办法
1317
查看次数

将当前git分支放到项目版本中

我想将当前的git分支放入pom xml的version字段中.我发现互联网上的一些帖子建议做类似的事情:

<version>${scm.version}</version>
Run Code Online (Sandbox Code Playgroud)

但这似乎不适用于git.还有其他解决方案吗?

versioning git maven

7
推荐指数
1
解决办法
1万
查看次数

在golang中处理api版本的idomatic方法是什么?

我正在Golang中创建一个用于移动应用程序的服务器.我需要能够为用户不更新应用程序的情况支持多个版本的API.版本控制的主要问题是以正确的格式返回移动应用程序版本的数据.

我已经看到有三种基本方法可以做到这一点.
A.一种方法是在"/"上设置一个路由处理程序,然后允许该函数解析用于版本控制的URL.
例:

func main() {
http.HandleFunc("/", routes.ParseFullURI)
}
Run Code Online (Sandbox Code Playgroud)

B.使用诸如gorilla/mux之类的库来处理路由器中的模式,但我看到一些警告说这可能太慢了.
例:

  func main() {
            mux.HandleFunc("{version:}/", routes.ParseVersionForHome)
            mux.HandleFunc("{version:}/getData", routes.ParseVersionForGetDAta)
            mux.HandleFunc("{version:}/otherCall", routes.ParseVersionForOtherCall)
            }
Run Code Online (Sandbox Code Playgroud)

C.让个别网址不改变,但基于标题,分成不同的版本.例:

func main() {
   http.HandleFunc("/", routes.ParseHeaderForVersionForHome)
   http.HandleFunc("/getData", routes.ParseHeaderForVersionForGetData)
   http.HandleFunc("/otherCall", routes.ParseHeaderForVersionForOtherCall)
}
Run Code Online (Sandbox Code Playgroud)

我担心选项1代码太乱了.我担心选项2在性能方面会太慢,而且我担心选项3对于客户来说很难处理,或者由于版本没有明确标记而会让人感到困惑.

哪种方法最适合Golang,并且会为经常轮询的移动应用带来最佳性能?

versioning routes go

7
推荐指数
1
解决办法
4144
查看次数

为什么Google使用适用于Android的Google API从版本12.0.1跳到15.0.0?

Google最近发布了适用于Android的新版Google API,让我感到非常奇怪,为什么他们会跳出3个主要版本.据我所知,他们没有在发行说明中解释它,所以我的问题就像标题一样.

为什么Google决定使用适用于Android的Google API从版本12.0.1升级到15.0.0?

versioning android google-api

7
推荐指数
1
解决办法
327
查看次数

为我的php应用程序(社交应用程序)创建API版本控制

我目前正在开发社交应用程序。

我想在我的PHP后端上安装一个版本控制系统,但是我不知道从哪里开始:我在网上查找了很多文章,但是我真的不明白我所发现的内容。

假设我的应用程序是v1.0。然后,我创建了一个新版本v2.0,当然我也更新了PHP文件。此后,如果某人尚未从v1.0更新其应用程序,我希望他们能够访问myapp.com/v1.0/该应用程序,以免该应用程序崩溃。

你会推荐什么?

我的一个典型的PHP文件如下所示:

<?php

// Include files

include_once ('../../config.php');

include_once (ROOT_DIR . '/config/includes.php');

$_USERDATA = Validator::validateUser($_POST["userId"], $_POST["session"]);

// Valid session

$qry = $db->prepare('SELECT n.id, n.type, n.time, n.isRead, n.postId, n.commentId, n.text, n.inReplyToCommentId, u.id as byUserId, 
    ( SELECT COUNT(nu.id)
    FROM notificationUsers AS nu
    WHERE nu.notificationId = n.id ) as detail1,
    ( SELECT nu2.userId
    FROM notificationUsers AS nu2
    WHERE nu2.notificationId = n.id ORDER BY nu2.id DESC LIMIT 1 ) as latestUserId FROM notifications AS n LEFT JOIN userData AS …
Run Code Online (Sandbox Code Playgroud)

php versioning api

7
推荐指数
1
解决办法
180
查看次数