javascript

java

python

c#

node.js

reactjs

android

php

c++

html

jquery

ruby-on-rails

css

git

ios

.net

sql

c

string

<img src="//i.stack.imgur.com/bk9VA.png" alt="" class="sponsor-tag-img" width="18" height="16"/>android

git - 如何在Excel文件和SQL模式文件上执行更好的文档版本控制

我负责几个Excel文件和SQL模式文件。 我该如何对这些文件执行更好的文档版本控制?

我需要知道这些文件中修改过的部分(不同部分)并保留所有版本以供参考。 目前我在文件名上附加时间戳,但我发现它似乎效率低下。

有没有办法或好的做法来做更好的文档版本控制?

顺便说一句,编辑通过电子邮件发送给我文件。

trans by 2019-09-11T10:47:53Z

.net - 如何将SVN修订版号与我的ASP.NET网站同步?

Stack Overflow底部有一个subversion版本号:

svn修订版:679

我想在我的.NET Web Site/Application,Windows窗体,WPD项目/解决方案中使用这种自动版本控制。

我该如何实现?

trans by 2019-09-08T16:33:15Z

windows - 如何设置现有.exe,.dll的版本信息?

作为构建过程的一部分,我需要为所有已编译的二进制文件设置版本信息。 一些二进制文件已经有版本信息(在编译时添加),有些则没有。

我希望能够应用以下信息:

  • 公司名
  • 版权声明
  • 产品名称
  • 产品描述
  • 文件版本
  • 产品版本

所有这些属性都由构建脚本指定,并且必须在编译后应用。 这些是使用C ++ Builder 2007编译的标准二进制文件(而不是程序集)。

我怎样才能做到这一点?

trans by 2019-08-02T05:14:46Z

c# - 自动更新版本麻木

我希望我的应用程序的version属性为每个构建增加,但我不确定如何在Visual Studio(2005/2008)中启用此功能。 我试图将AssemblyVersion指定为1.0。*但它并没有让我得到我想要的。

我也使用了一个设置文件,并且在早期的尝试中,当程序集版本发生更改时,我的设置被重置为默认值,因为应用程序在另一个目录中查找了设置文件。

我希望能够以1.1.38的形式显示版本号,因此当用户发现问题时,我可以记录他们正在使用的版本,并告诉他们如果他们有旧版本则升级。

还将理解版本控制如何工作的简短说明。 构建和修订号何时增加?

trans by 2019-07-25T22:33:20Z

如何使用spring管理REST API版本控制?

我一直在搜索如何使用Spring 3.2.x管理REST API版本,但我找不到任何易于维护的东西。 我先解释一下我遇到的问题,然后解决一个问题...但我想知道我是否在这里重新发明了这个问题。

我想基于Accept标头管理版本,例如,如果请求具有Accept标头RequestMappingInfoHandlerMapping,我希望spring MVC将其转发到处理此版本的方法。 并且由于并非API中的所有方法都在同一版本中发生变化,因此我不想访问每个控制器并为版本之间没有更改的处理程序更改任何内容。 我也不想让逻辑找出在控制器中使用哪个版本(使用服务定位器),因为Spring已经发现了要调用的方法。

因此,采用版本1.0到1.8的API,其中版本1.0中引入了处理程序,并在v1.7中进行了修改,我希望以下列方式处理它。 想象一下,代码在控制器内部,并且有一些代码能够从头部提取版本。 (以下在Spring中无效)

@RequestMapping(...)
@VersionRange(1.0,1.6)
@ResponseBody
public Object method1() {
   // so something
   return object;
}

@RequestMapping(...) //same Request mapping annotation
@VersionRange(1.7)
@ResponseBody
public Object method2() {
   // so something
   return object;
}

这在春天是不可能的,因为2个方法具有相同的RequestMappingInfoHandlerMapping注释并且Spring无法加载。 我们的想法是RequestMappingHandlerMapping注释可以定义打开或关闭的版本范围。 第一种方法从版本1.0到1.6有效,而第二种方法从版本1.7开始(包括最新版本1.8)。 我知道如果某人决定通过99.99版本,这种方法会中断,但这是我可以接受的。

现在,由于上述情况不可能在没有对弹簧如何工作的严重修改的情况下进行,我正在考虑修改处理程序与请求匹配的方式,特别是编写我自己的RequestMappingInfoHandlerMapping,并且在那里有版本范围。 例如

码:

@RequestMapping(..., produces = "application/vnd.company.app-[1.0-1.6]+json)
@ResponseBody
public Object method1() {
   // so something
   return object;
}

@RequestMapping(..., produces = "application/vnd.company.app-[1.7-]+json)
@ResponseBody
public Object method2() {
   // so something
   return object;
}

通过这种方式,我可以在注释的产生部分中定义关闭或打开的版本范围。 我现在正在研究这个解决方案,问题是我仍然需要更换一些我不喜欢的核心Spring MVC类(RequestMappingInfoHandlerMapping,RequestMappingHandlerMappingRequestMappingInfo),因为这意味着每当我决定做额外工作时 升级到更新版本的spring。

我会很感激任何想法......特别是,任何建议都可以用更简单,更容易维护的方式来做到这一点。


编辑

添加赏金。 为了得到赏金,请回答上面的问题,而不建议在控制器本身有这个逻辑。 Spring已经有很多逻辑来选择调用哪个控制器方法,我想捎带它。


编辑2

我在github中分享了原始的POC(有一些改进):[https://github.com/augusto/restVersioning]

trans by 2019-07-24T18:30:22Z

版本控制 - 如何版本REST URI

版本REST URI的最佳方法是什么? 目前我们在URI本身有一个版本#,即。

http://example.com/users/v4/1234/

对于此表示的第4版。

该版本是否属于queryString?即。

http://example.com/users/1234?version=4

或者版本控制最好的另一种方式?

trans by 2019-07-19T17:09:10Z

.net - 版本3.0.0.1的ASP.NET MVC安全补丁打破了构建

这个问题在这里已有答案:

  • Windows更新导致MVC3和MVC4停止工作                                     9个答案

安装ASP.NET MVC 3安全更新KB2990942后,MVC版本似乎从3.0.0.0增加到3.0.0.1.这会导致Visual Studio不再找到引用。

<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />

Resharper没有显示任何问题,但构建失败,有许多未解析的MVC类型和警告:

警告:无法解析此引用。 无法找到   assembly&#34; System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL&#34;。 检查   确保程序集存在于磁盘上。 如果需要此引用   通过您的代码,您可能会遇到编译错误。

这种做法很有道理。 我的机器上不再存在此版本。

我无法保证dev机器,构建服务器和生产服务器上的确切MVC版本。 他们可能有3.0.0.03.0.0.1,这可能随时改变。 Windows Update可能随时发布新的MVC版本。 此外,每当发布MVC更新时,我都不想增加所有* .csproj文件中的版本号。

更新会影响多个版本:

  • KB 2993939:Microsoft ASP.NET MVC 2的安全更新
  • KB 2993937:Microsoft ASP.NET MVC 3的安全更新
  • KB 2993928:Microsoft ASP.NET MVC 4.0的安全更新
  • KB 2992080:Microsoft ASP.NET MVC 5.0的安全更新

安全公告:MS14-059:ASP.NET MVC中的漏洞可能允许安全功能绕过(2990942)

处理这种情况的最佳方法是什么? 如何在未来的MVC更新中展开构建和生产并保持安全?

trans by 2019-07-16T20:15:24Z

.net - 如何通过CI平台(Hudson)自动增加C#程序集版本?

我自己和我的团队在增加程序集版本号时非常可怕,我们经常发送1.0.0.0版本的程序集。 显然,这会引起很多麻烦。

通过我们的CI平台,我们的实践越来越好,我真的想将其设置为自动递增assemblyinfo.cs文件中的值,以便使用代码自动更新程序集的版本 该组件的变化。

我以前设置(在我们找到Hudson之前)通过assemblyinfo.cs或命令行(无法记住)增加值的方法,但是使用Hudson,这将更新SVN存储库并触发另一个构建。 由于Hudson每小时轮询SVN,这将导致缓慢的无限循环。

让Hudson增加版本号是一个坏主意吗? 什么是另一种方法呢?

理想情况下,我的解决方案标准是:

  • 在构建之前增加assemblyinfo.cs中的内部版本号
  • 仅增加已更改的程序集中的内部版本号。 这可能是不可能的,因为Hudson每次执行构建时都会清除项目文件夹
  • 将更改的assemblyinfo.cs提交到代码存储库(当前为VisualSVN)
  • 在下次扫描更改时,不会导致Hudson触发新构建

在我脑海中解决这个问题,我可以通过批处理文件/命令轻松地提出大部分解决方案,但是我的所有想法都会导致Hudson在下次扫描时触发新的构建。 我不是在寻找某人为我做任何事情,只是指出我正确的方向,也许是让Hudson忽略某些SVN提交的技巧等。

到目前为止,我发现的所有内容都只是一篇文章,解释了如何自动增加版本号,没有任何内容考虑到可以旋转到无限循环的CI平台。

trans by 2019-07-05T23:11:31Z

sql - 修订版的数据库设计?

我们在项目中要求存储数据库中实体的所有修订(更改历史记录)。 目前我们有2个设计方案:

例如 为&#34;员工&#34; 实体

设计1:

-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"

-- Holds the Employee Revisions in Xml. The RevisionXML will contain
-- all data of that particular EmployeeId
"EmployeeHistories (EmployeeId, DateModified, RevisionXML)"

设计2:

-- Holds Employee Entity
"Employees (EmployeeId, FirstName, LastName, DepartmentId, .., ..)"

-- In this approach we have basically duplicated all the fields on Employees 
-- in the EmployeeHistories and storing the revision data.
"EmployeeHistories (EmployeeId, RevisionId, DateModified, FirstName, 
      LastName, DepartmentId, .., ..)"

有没有其他办法做这件事?

&#34;设计1&#34;的问题 是每次需要访问数据时我们必须解析XML。 这将减慢进程并添加一些限制,例如我们无法在修订数据字段上添加联接。

以及&#34;设计2&#34;的问题 是我们必须复制所有实体上的每个字段(我们有大约70-80个实体,我们要为其维护修订)。

trans by 2019-07-01T18:32:49Z

如何在svn和/或gi中“unversion”一个文件

它总是发生在我身上。 我不小心版本化了一个文件,我不想被版本化(即开发人员/机器特定的配置文件)。

如果我提交这个文件,我会搞乱所有其他开发者机器上的路径 - 他们会不高兴。

如果我从版本控制中删除该文件,它将从其他开发者机器中删除 - 他们会不高兴。

如果我选择永远不提交文件,我总是有一个“脏”的结账 - 我不开心。

是一种干净的方法来“修改”来自修订控制的文件,这会导致没有人感到不快乐吗?

编辑:尝试澄清一点:我已经将文件提交到存储库,我只想将其从版本控制中删除 - 我特别不希望它从每个人进行结账时被物理删除。 我最初希望它被忽略。

答:如果我能接受第二个答案,那就是这个。 它回答了关于git的问题 - 接受的答案是关于svn。

trans by 2019-06-24T05:12:03Z

rest - 如何管理版本化API的底层代码库?

我一直在阅读有关ReST API的版本控制策略,而且它们似乎没有解决您如何管理底层代码库的问题。

假设我们正在对API进行一系列重大更改 - 例如,更改我们的客户资源,使其返回单独的http://api.mycompany.com/v1/customers/{id}http://api.mycompany.com/v2/customers/{id}字段,而不是单个name字段。 (对于此示例,我将使用URL版本控制解决方案,因为它很容易理解所涉及的概念,但问题同样适用于内容协商或自定义HTTP标头)

我们现在有一个端点位于http://api.mycompany.com/v1/customers/{id},另一个不兼容的端点位于http://api.mycompany.com/v2/customers/{id}。我们仍在发布v1 API的错误修正和安全更新,但新功能开发现在都专注于v2。 我们如何编写,测试和部署对API服务器的更改? 我可以看到至少两个解决方案:

  • 为v1代码库使用源代码控制分支/标记。 v1和v2是独立开发和部署的,必要时使用版本控制合并将相同的错误修复应用于两个版本 - 类似于在开发主要新版本的同时管理本机应用程序的代码库,同时仍然支持以前的版本。

  • 使代码库本身了解API版本,因此您最终会得到一个包含v1客户表示和v2客户表示的单一代码库。 将版本控制视为解决方案体系结构的一部分而不是部署问题 - 可能使用命名空间和路由的某种组合来确保请求由正确的版本处理。

分支模型的明显优势在于删除旧的API版本是微不足道的 - 只是停止部署适当的分支/标记 - 但如果您运行多个版本,最终可能会遇到一个非常复杂的分支结构和部署管道。 “统一代码库”模型避免了这个问题,但是(我认为?)会使得在不再需要时从代码库中删除已弃用的资源和端点变得更加困难。 我知道这可能是主观的,因为不太可能有一个简单的正确答案,但我很想知道在多个版本中维护复杂API的组织如何解决这个问题。

trans by 2019-06-12T05:21:40Z

Java项目的构建和版本编号(ant,cvs,hudson)

Java项目中系统构建编号和版本号管理的当前最佳实践是什么? 特别:

  • 如何在分布式开发环境中系统地管理构建号

  • 如何在源/可用于运行时应用程序中维护版本号

  • 如何与源存储库正确集成

  • 如何更自动地管理版本号与存储库标签

  • 如何与持续构建基础架构集成

有很多工具可用,而ant(我们正在使用的构建系统)有一个维护构建号的任务,但是不清楚如何使用CVS,svn或类似的多个并发开发人员来管理它。

[编辑]

下面出现了几个好的和有用的部分或具体的答案,所以我将总结其中的一些。 听起来对我来说就像这里没有真正强大的“最佳实践”,而是一系列重叠的想法。 下面,找到我的摘要和一些人们可能会尝试回答的结果问题。 [新的stackoverflow ...如果我做错了,请提供评论。]

  • 如果您使用的是SVN,则可以使用特定结帐的版本控制。 构建编号可以利用它来创建标识特定结帐/修订的唯一构建号。 [我们因遗留原因而使用的CVS并没有提供这种程度的洞察力......使用标签进行人工干预可以帮助您实现目标。]

  • 如果您使用maven作为构建系统,则支持从SCM生成版本号,以及用于自动生成版本的发布模块。 [出于各种原因,我们不能使用maven,但这有助于那些能够做到的人。 [感谢marcelo-morales]]

  • 如果您使用ant作为构建系统,则以下任务描述可以帮助生成捕获构建信息的Java .properties文件,然后可以通过多种方式将其折叠到构建中。 [我们扩展了这个想法,包括哈德逊派生的信息,感谢marty-lamb]。

  • Ant和maven(以及hudson和巡航控制)提供了将构建号放入.properties文件或.txt / .html文件的简便方法。 这种“安全”是否足以防止它被故意或意外地篡改? 在构建时将它编译成“版本化”类是否更好?

  • 断言:应该在像哈德森这样的持续集成系统中定义/制定构建编号。 [感谢marcelo-morales]我们已经采纳了这个建议,但它确实破解了发布工程问题:发布是如何发生的? 发布中是否有多个buildnumbers? 来自不同版本的构建数量之间是否存在有意义的关系?

  • 问题:内部版本编号背后的目标是什么? 它用于QA吗? 怎么样? 它是否主要由开发人员用于在开发期间消除多个构建之间的歧义,或更多用于QA以确定最终用户构建的内容? 如果目标是可重复性,理论上这就是发布版本号应该提供的 - 为什么不呢? (请在下面作为你的答案的一部分回答这个问题,它将有助于说明你做出的建议/建议...)

  • 问题:手动构建中是否存在构建号码的位置? 这是有问题的,以至于每个人都应该使用CI解决方案吗?

  • 问题:是否应将建立号码签入SCM? 如果目标是可靠且明确地识别特定构建,那么如何应对可能崩溃/重启等的各种连续或手动构建系统......

  • 问题:构建号码是否应该简短且甜蜜(即单调增加整数),以便易于存档到文件名中,易于在通信中引用等等......或者它应该是多长的用户名, 日期戳,机器名等?

  • 问题:请提供有关如何将构建号分配适合您的大型自动发布流程的详细信息。 是的,maven爱好者,我们知道这已经完成了,但并非我们所有人都喝醉了kool-aid ......

我真的很喜欢将其充实成一个完整的答案,至少对于我们的cvs / ant / hudson设置的具体例子,所以有人可以基于这个问题构建一个完整的策略。 我将标记为“答案”的任何人都可以为这个特定情况提供汤到坚果的描述(包括cvs标记方案,相关的CI配置项和释放过程,将构建号折叠到发布中,以便以编程方式 如果你想询问/回答另一个特定的配置(例如,svn / maven /巡航控制),我将链接到这里的问题。--JA

[编辑09年10月23日]我接受了最高投票的答案,因为我认为这是一个合理的解决方案,而其他几个答案也包括好主意。 如果有人想要用marty-lamb's合成其中一些,我会考虑接受另一个。 我对marty-lamb的唯一顾虑是它不会生成一个可靠的序列化构建号 - 它依赖于构建器系统的本地时钟来提供明确的构建号,这并不是很好。

[编辑7月10日]

我们现在包括如下所示的类。 这允许将版本号编译成最终的可执行文件。 在记录数据,长期归档输出产品中发出不同形式的版本信息,并用于跟踪我们(有时是数年以后)对特定构建的输出产品的分析。

public final class AppVersion
{
   // SVN should fill this out with the latest tag when it's checked out.

   private static final String APP_SVNURL_RAW = 
     "$HeadURL: svn+ssh://user@host/svnroot/app/trunk/src/AppVersion.java $";
   private static final String APP_SVN_REVISION_RAW = "$Revision: 325 $";  

   private static final Pattern SVNBRANCH_PAT = 
     Pattern.compile("(branches|trunk|releases)\\/([\\w\\.\\-]+)\\/.*");
   private static final String APP_SVNTAIL = 
     APP_SVNURL_RAW.replaceFirst(".*\\/svnroot\\/app\\/", "");

  private static final String APP_BRANCHTAG;
  private static final String APP_BRANCHTAG_NAME;
  private static final String APP_SVNREVISION = 
    APP_SVN_REVISION_RAW.replaceAll("\\$Revision:\\s*","").replaceAll("\\s*\\$", "");


  static {
    Matcher m = SVNBRANCH_PAT.matcher(APP_SVNTAIL);
    if (!m.matches()) {
      APP_BRANCHTAG = "[Broken SVN Info]";
      APP_BRANCHTAG_NAME = "[Broken SVN Info]";
    } else {
      APP_BRANCHTAG = m.group(1);
      if (APP_BRANCHTAG.equals("trunk")) {
        // this isn't necessary in this SO example, but it 
        // is since we don't call it trunk in the real case
        APP_BRANCHTAG_NAME = "trunk";
      } else {
        APP_BRANCHTAG_NAME = m.group(2);
      }
    }
  }

  public static String tagOrBranchName()
  { return APP_BRANCHTAG_NAME; }

  /** Answers a formatter String descriptor for the app version.
   * @return version string */
  public static String longStringVersion()
  { return "app "+tagOrBranchName()+" ("+
    tagOrBranchName()+", svn revision="+svnRevision()+")"; }

  public static String shortStringVersion()
  { return tagOrBranchName(); }

  public static String svnVersion()
  { return APP_SVNURL_RAW; }

  public static String svnRevision()
  { return APP_SVNREVISION; }

  public static String svnBranchId()
  { return APP_BRANCHTAG + "/" + APP_BRANCHTAG_NAME; } 

  public static final String banner()
  {
    StringBuilder sb = new StringBuilder();
    sb.append("\n----------------------------------------------------------------");
    sb.append("\nApplication -- ");
    sb.append(longStringVersion());
    sb.append("\n----------------------------------------------------------------\n");
    return sb.toString();
  }
}

如果这值得成为维基讨论,请留下评论。

trans by 2019-06-08T22:15:25Z

java - 如何在Intellij中切换到另一个subversion分支?

在IntelliJ中切换分支的概念是什么?我必须是盲人或白痴......

我会假设有一个“切换到复制”选项或类似的东西,但没有...

编辑澄清:我的prev IDE有一个简单的“切换到复制”选项,它更新了所有与当前分支/主干不同的文件。IntelliJ似乎对此有一种完全不同的方法,我似乎并不理解。 帮助也不是很有用。

非常感谢有用的关键字,链接或提示。 谢谢。

trans by 2019-05-24T20:40:56Z

linux - 如何比较Bash中点分隔版本格式的两个字符串?

有没有办法在bash上比较这样的字符串,例如:2.4.52.82.4.5.1

trans by 2019-05-24T03:12:19Z

Rails路由的API版本控制

我正试图像Stripe那样对我的API进行版本测试。 下面给出了最新的API版本是2。

/api/users返回301至/api/asdf/users

/api/asdf/users在版本1中返回200个用户索引

/api/asdf/users返回301至/api/v2/users

/api/asdf/users返回301至/api/v2/users

因此,除非指定的版本存在,否则基本上任何未指定版本的内容都会链接到最新版本,然后重定向到它。

这是我到目前为止:

scope 'api', :format => :json do
  scope 'v:api_version', :api_version => /[12]/ do
    resources :users
  end

  match '/*path', :to => redirect { |params| "/api/v2/#{params[:path]}" }
end
trans by 2019-05-22T21:08:35Z

git - “下游”和“上游”的定义

我已经开始玩Git并遇到过“上游”和“下游”这两个词。 我之前见过这些,但从未完全理解它们。 这些术语在SCM(软件配置管理工具)和源代码的上下文中意味着什么?

trans by 2019-03-26T14:01:15Z

.NET中API破坏性更改的权威指南

我想尽可能多地收集有关.NET / CLR中API版本控制的信息,特别是API更改如何破坏客户端应用程序。 首先,让我们定义一些术语:

API更改 - 类型的公开可见定义的更改,包括其任何公共成员。 这包括更改类型和成员名称,更改类型的基本类型,从类型的已实现接口列表添加/删除接口,添加/删除成员(包括重载),更改成员可见性,重命名方法和类型参数,添加默认值 对于方法参数,在类型和成员上添加/删除属性,以及在类型和成员上添加/删除泛型类型参数(我错过了什么吗?)。 这不包括成员团体的任何变更,或私人成员的任何变更(即我们不考虑反思)。

二进制级别中断 - 一种API更改,导致针对旧版本API编译的客户端程序集可能无法加载新版本。 示例:更改方法签名,即使它允许以与之前相同的方式调用(即:void返回类型/参数默认值重载)。

源级别中断 - 一种API更改,导致编写现有代码以针对旧版本的API进行编译,可能无法使用新版本进行编译。 然而,已经编译的客户端程序集像以前一样工作。 示例:添加一个新的重载,这可能导致前一个明确的方法调用不明确。

源级安静语义更改 - 导致现有代码编写以针对旧版API进行编译的API更改悄然改变其语义,例如: 通过调用不同的方法。 但是,代码应该继续编译而不会出现警告/错误,以前编译的程序集应该像以前一样工作。 示例:在现有类上实现新接口,导致在重载解析期间选择不同的重载。

最终目标是尽可能地对尽可能多的破坏和静默语义API更改进行编目,并描述破坏的确切影响,以及哪些语言受其影响并且不受其影响。扩展后者:虽然一些变化普遍影响所有语言(例如,向接口添加新成员将破坏任何语言中该接口的实现),但有些需要非常特定的语言语义才能进入游戏以获得休息。这通常涉及方法重载,并且通常涉及与隐式类型转换有关的任何事情。似乎没有任何方法可以在这里定义“最小公分母”,即使对于符合CLS的语言(即至少符合CLI规范中定义的“CLS使用者”规则的那些语言) - 尽管我会很感激,如果有人在这里纠正我错了 - 所以这必须按语言去语言。那些最感兴趣的东西自然就是开箱即用的.NET:C#,VB和F#;但其他人,如IronPython,IronRuby,Delphi Prism等也是相关的。它的角落越多,它就会越有趣 - 删除成员之类的东西是非常不言而喻的,但是例如它们之间的细微交互。方法重载,可选/默认参数,lambda类型推断和转换运算符有时会非常令人惊讶。

举几个例子来启动这个:

添加新方法重载

种类:源级休息

受影响的语言:C#,VB,F#

更改前的API:

public class Foo
{
    public void Bar(IEnumerable x);
}

更改后的API:

public class Foo
{
    public void Bar(IEnumerable x);
    public void Bar(ICloneable x);
}

示例客户端代码在更改之前工作并在其之后中断:

new Foo().Bar(new int[0]);

添加新的隐式转换运算符重载

种类:源级休息。

受影响的语言:C#,VB

语言不受影响:F#

更改前的API:

public class Foo
{
    public static implicit operator int ();
}

更改后的API:

public class Foo
{
    public static implicit operator int ();
    public static implicit operator float ();
}

示例客户端代码在更改之前工作并在其之后中断:

void Bar(int x);
void Bar(float x);
Bar(new Foo());

注意:F#没有被破坏,因为它没有任何语言级别支持重载运算符,既不显式也不隐式 - 都必须直接调用ExtensionMethodAttributeop_Implicit方法。

添加新的实例方法

种类:源级静默语义变化。

受影响的语言:C#,VB

语言不受影响:F#

更改前的API:

public class Foo
{
}

更改后的API:

public class Foo
{
    public void Bar();
}

样本客户端代码遭受安静的语义更改:

public static class FooExtensions
{
    public void Bar(this Foo foo);
}

new Foo().Bar();

注意:F#没有被破坏,因为它没有ExtensionMethodAttribute的语言级支持,并且需要将CLS扩展方法作为静态方法调用。

trans by 2019-03-09T09:30:19Z

最佳实践:软件版本控制

是否有任何指导或标准的最佳实践如何在业余时间为您开发的软件进行版本设计以获得乐趣,但是有些人会使用它? 我认为有必要对这样的软件进行版本控制,以便您了解第一版所述的内容(例如,修复错误,支持等)。

但是我在哪里开始版本控制?0.0.0? 还是0.0? 然后我如何增加数字? 主要发布。小变化? 并且不应该对版本控制系统的任何提交是另一个版本? 或者这仅适用于以高效方式使用的版本?

trans by 2019-03-03T04:05:00Z

svn - 暂时放弃Subversion中的未提交更改(la“git-stash”)

在编写存储在Subversion仓库中的软件时,我经常修改一些文件,然后注意我想为我的主要工作做一些预备性更改。 例如。 在实现新功能时,我注意到一些可能对我有帮助的重构。

为了不混合两个不相关的更改,在这些情况下,我想“收起”我的更改,即恢复到存储库版本,执行一些其他更改,提交这些更改,然后“取回”我的更改。

git-stash允许这样做。 是否有一些方法可以直接或使用某些插件或脚本使用Subversion。 Eclipse插件也没关系。

trans by 2019-02-02T01:36:06Z

缓存 - 如何强制客户端刷新JavaScript文件?

我们目前正在进行私人测试,因此仍然在进行相当快速的更改,尽管显然随着使用量开始增加,我们将放慢这一过程。 话虽这么说,我们遇到的一个问题是,在我们用新的JavaScript文件推出更新之后,客户端浏览器仍然使用文件的缓存版本,但他们看不到更新。 显然,在支持调用中,我们可以简单地通知他们执行ctrlF5刷新以确保他们从服务器获取最新文件,但最好在此之前处理它。

我们当前的想法是简单地将版本号附加到JavaScript文件的名称上,然后在进行更改时,增加脚本上的版本并更新所有引用。 这绝对可以完成工作,但更新每个版本的引用可能会变得很麻烦。

我确信我们不是第一个处理这个问题的人,我想我会把它扔给社区。 在更新代码时,如何确保客户更新缓存? 如果您使用上述方法,您是否正在使用简化更改的流程?

trans by 2019-01-21T21:23:08Z

1 2 下一页 共2页