Tag: 版本控制

如何使C#.NET CF程序的AssemblyInfo版本传播到Explorer Properties窗口?

看起来如果您编译Visual Studio解决方案并在AssemblyInfo.cs文件中有一个版本#,那应该传播到Windows资源管理器属性对话框。 这样,有人可以直接右键单击* .exe并单击“属性”以查看版本#。 Visual Studio中是否有特殊设置才能实现此目的? 示例图片http://content.screencast.com/users/Pincas/folders/Jing/media/40442efd-6d74-4d8a-8e77-c1e725e6c150/2008-09-24_0849.png 编辑:我应该提到,具体来说,这是.NET Compact Framework 2.0,它不支持AssemblyFileVersion。 所有希望都失去了吗?

共享多个项目之间的公共代码

我有一个类库项目包含在我的项目中使用的常用代码,我使用subversion作为源代码控制。 我有一些关于管理解决方案,项目和可用性代码的问题。 我希望在项目之间共享这个类库,当我更新它时,更新很容易应用于所有项目。我可以在哪里找到这个类库来共享项目并改善源代码控制,可用性和……? 任何的想法?

通过UInt16屏障对assembly信息进行版本控制

在过去,我通常使用变更集或svn编号对二进制文件进行版本控制,例如1.1.123.3,其中大数字是源控制系统的变更集或转速。 但是,随着系统即将使用,我们已经远远超过了70000+变更集之类的uint障碍,因此当用作asssembly版本属性或汇编文件版本属性时会导致溢出和编译器错误。 请参阅: http : //msdn.microsoft.com/en-us/library/system.reflection.assemblyversionattribute.aspx 还有哪些替代策略仍将二进制文件链接到变更集? 我调整了我的任务,使用给出的解决方案: $(Branch).$([MSBuild]::Subtract($(ChangeSet),$(Offset))).$(OffsetCount)

版本号float,decimal或double

我有一个文档管理系统,其中文档可以有多个版本。 保存每个版本,用户可以查看版本历史记录。 我想知道的是: 我应该使用什么数据类型的版本号? 十进制,浮点数还是双倍? 我正在使用.NET和C#。 版本号从0.1开始,每个发布的主要版本将四舍五入到下一个整数。 即0.4到1.0,1.3到2.0等。 当版本号达到0.9并且添加了次要版本时,我希望当我添加它时,该数字将变为0.10而不是1.0 。 这是最大的问题。 任何建议表示赞赏。 谢谢。

读取配置节的通用方法

我试图实现从配置文件中读取节的通用方法 。 配置文件可能包含“标准”部分或“自定义”部分,如下所示。 我尝试的方法如下: private string ReadAllSections() { StringBuilder configSettings = new StringBuilder(); Configuration configFile = ConfigurationManager.OpenExeConfiguration(Application.ExecutablePath); foreach (ConfigurationSection section in configFile.Sections) { configSettings.Append(section.SectionInformation.Name); configSettings.Append(Environment.NewLine); if (section.GetType() == typeof(DefaultSection)) { NameValueCollection sectionSettings = ConfigurationManager.GetSection(section.SectionInformation.Name) as NameValueCollection; if (sectionSettings != null) { foreach (string key in sectionSettings) { configSettings.Append(key); configSettings.Append(” : “); configSettings.Append(sectionSettings[key]); configSettings.Append(Environment.NewLine); } } […]

序列化和版本控制

我需要将一些数据序列化为字符串。 然后将该字符串存储在特殊列SerializeData中的DB中。 我创建了用于序列化的特殊类。 [Serializable] public class SerializableContingentOrder { public Guid SomeGuidData { get; set; } public decimal SomeDecimalData { get; set; } public MyEnumerationType1 EnumData1 { get; set; } } 连载: protected override string Serialize() { SerializableContingentOrder sco = new SerializableContingentOrder(this); MemoryStream ms = new MemoryStream(); SoapFormatter sf = new SoapFormatter(); sf.Serialize(ms, sco); string data […]

你应该在哪里存储第三方集会?

好的,我们有一个相当大的解决方案,里面有大约8个不同的项目。 这些项目中的每一个都依赖于各种不同的第三方组件。 此解决方案位于源控制的主干分支中。 我们还有大约5个不同的树干分支。 管理这些第三方程序集的最佳方法是什么? 当您添加对程序集的引用然后单击它并查看属性窗口时,我注意到它具有到程序集的硬编码路径。 例如:我们所有的分支都映射到“C:\ Code \”。 因此trunk将是“C:\ Code \ Trunk”,而分支将是“C:\ Code \ somebranch”。 如果我在“C:\ Code \ Trunk”中创建一个名为“Assemblies”的文件夹,然后将所有第三方程序集放在该文件夹中,然后我添加一个程序集的引用,那个程序集引用是否相对? 如果我单击添加的程序集,我会看到灰色的路径属性显示为“C:\ Code \ Trunk \ Assemblies \ someassembly.dll”。 如果我然后从树干分支会发生什么? “somebranch”仍然会引用“C:\ Code \ Trunk \ Assemblies \ someassembly.dll”,还是会引用“C:\ Code \ somebranch \ Assemblies \ someassembly.dll”? 目前,我们实际上在源控件中有一个名为“Assemblies”的分支,它像任何其他分支一样映射到“C:\ Code \”。 因此,所有带有引用程序集的项目的分支都引用了“C:\ Code \ Assemblies \ someassembly.dll”,无论项目位于哪个分支,路径都是相同的。 不幸的是,这意味着您必须获得正在使用的分支的最新版本以及程序集分支,以便成功构建解决方案。 总而言之: […]

防止TFS添加临时文件

我正在开发一个在TFS中绑定的Project,这个项目给了我一个文件夹Log。 当我执行我的项目并进行一些测试时,它会生成文本文件并存储在Log文件夹中。 之后,当我尝试检入文件时,这些文件将作为TFS中的新文件签入。 我希望TFS排除这些文件。 我存储临时文件的文件夹是: \WebPages\ErrorLogs \WebPages\TempReports 在TFS中是否有设置,我可以说它不在TFS中包含此文件夹但是从服务器获取最新信息? 是否可以为此问题创建签入策略?

为什么我不应该有一个单片实用程序库?

我们有一些常见的库(C#,但我想这不是平台或语言特定的),让我们称它们为A,B和C.库A引用了B和C,库B引用了第三方DLL,库C独立。 三个独立项目背后的想法是每个库都有不同的function,但随着时间的推移,库A变成了一个或多或少“全能”的公共库,大多数客户端应用程序都引用它。 只有少数应用程序在没有A的情况下引用B和/或C. 我们正在尝试改进我们的源代码控制约定,我们要做的一件事是正确地标记和释放这些库DLL,因此客户端项目文件可以指向代码的静态版本而不是始终更改的主干。 这有点令人费解 – 例如,一个引用A和B的客户端项目.A本身引用B,因此技术上有两个来自客户端项目的B引用。 因此,显而易见的事情似乎是将所有内容组合到一个具有组织良好的命名空间的公共/实用程序库中。 正如我所说,几乎每个客户端应用程序都引用了这些库中的一个,所以谁在乎呢? 这样做不会引入第三方依赖的任何不良情况,并且我们所有的目标机器都是内部的并且维护大致相同的环境/软件配置。 这似乎太容易解决了,所以我想我至少得到第二个意见。 另一种方法是使用GAC并强烈签署/版本化所有内容。 我在这里错过任何捕获物吗?

版本之间的界面变化 – 如何管理?

这是我们在客户网站上遇到的一种相当不愉快的泡菜。 客户端有大约100个工作站,我们在其上部署了产品“MyApp”的1.0.0版本。 现在,该产品所做的一件事就是它加载了一个加载项(称之为“MyPlugIn”,它首先在中央服务器上查找是否有更新的版本,如果是,则复制该文件在本地,然后它使用Assembly.Load加载加载项并调用某个已知的接口。这已经好几个月了。 然后客户想在某些机器上安装我们产品的v1.0.1(但不是全部)。 随之而来的是MyPlugIn的新版本。 但后来出现了问题。 有一个共享的DLL,由MyApp和MyPlugIn引用,称为MyDLL,它有一个方法MyClass.MyMethod 。 在v1.0.0和v1.0.1之间, MyClass.MyMethod的签名发生了变化(添加了一个参数)。 现在新版本的MyPlugIn会导致v1.0.0客户端应用程序崩溃: 找不到方法:MyClass.MyMethod(System.String) 客户端明确地不希望在所有客户端站点上部署v1.0.1,因为v1.0.1中包含的修复程序仅对少数工作站是必需的,并且不需要将其推广到所有客户端。 遗憾的是,我们还没有(还)使用ClickOnce或其他大规模部署实用程序,因此推出v1.0.1将是一项痛苦且不必要的练习。 有没有办法在MyPlugin中编写代码,以便它能够同样正常工作,无论它是处理MyDLL v1.0.0还是v1.0.1? 也许在实际调用它之前,有一些方法可以使用reflection来探测预期的接口,看它是否存在? 编辑:我还应该提一下 – 我们有一些非常严格的QA程序。 由于QA已正式发布v1.0.1,因此我们不允许对MyApp或MyDLL进行任何更改。 我们唯一的行动自由是改变MyPlugin,这是专门为这个客户编写的自定义代码。