我一直在寻找Bootstrap 3 中的CSS和JavaScript.在一个常见的别名下没有任何模块化.对于JavaScript,它被注入到jQuery的原型中......
如何使用JavaScript从第三方插件/库的角度检测用户网页中包含哪个版本的Bootstrap?
javascript css versioning twitter-bootstrap twitter-bootstrap-3
我对编程世界完全陌生,对术语和典型方法的理解很少.
前一段时间我正在编写一些代码,但在删除错误的代码时意外删除了一些好的代码.从那时起,我开始创建我的文件版本,我会用日期和版本号命名每个文件.
但是,这很麻烦,必须为每个文件指定一个唯一的名称,然后转到我的核心文件并更改对新文件名称的引用.
然后,就在前几天我不小心写了一些重要的东西,即使用这种方法,可能是因为命名错字.
不用说,这种方法很糟糕.
我正在寻找有关更好的做法,更好的工具的建议.我一直在看版本控制,但很多,git svn看起来很复杂.这个想法是加快整个版本控制过程,而不是通过必须执行命令行更难.
现在我希望有一个工具可以在每次点击ctrl-s时保存文件的唯一版本,并给我一个按钮来创建最终版本.
当然,如果有完全不同的做事方式的建议,那将更加令人敬畏.
感谢大家.
我正在研究一个项目(只有我),我已经知道如何处理它的版本控制.我正在使用经典<major>.<minor>.<build or patch>.
我遇到的问题是我希望在我的一些提交中有标记指向相应的版本,但我不想手动执行.
现在我正在做:
v0.2.13,我改变AssemblyInfo.cs并设置该版本v0.2.13在Git上添加标签(手动).zip文件(不是所有时间)并命名为ProjectName v0.2.13我做错了吗?
我可以轻松地创建一个脚本来自动完成最后一步,但我想知道是否有一个关于自动化其他部分的良好实践?
背景
我有一个用C#编写的简单WinForms应用程序.我讨论了一段时间的部署解决方案,但最终决定放弃ClickOnce,因为一些约束条件具有至关重要的限制性.
相反,我已经修改了一个简单的解决方案,通过程序集/文件版本(我保持同步)在应用程序的属性中对应用程序进行版本控制.我正在通过安装项目(*.msi)进行部署.我将最新的程序集版本号在线存储在XML文件中,以及最新的安装程序文件.在运行时,我只需在线检查Application.ProductVersion对照最新版本,如果有更新,则打开更新对话框.
问题
到目前为止,这种方法运作良好,但我最近注意到这种方法存在一个主要问题.更新应用程序的程序集版本时,将在AppData/Company/Product/Version/blahblahblah中创建新版本的用户设置文件(user.config).这显然迫使用户重置新版本中的所有内容.
建议的解决方案
我不知道如何继续.到目前为止,该应用程序只有1个版本,目前的用户群基本上是我可以乞求测试它的人,所以切换策略没什么大不了的.我考虑过:
1.)编写我自己的设置系统,从而完全控制设置文件的存储和使用位置/方式.
2.)重新考虑我的版本控制/更新策略,以便更新不基于程序集版本.我不确定如何做到这一点,但我的测试似乎表明即使构建和安装具有相同程序集版本的新版本仍会破坏user.config.
我想我真的在问什么是否有任何方法可以保留默认设置系统,因为它很容易使用,同时也适应我的部署策略.
以下是实现版本控制的可行策略(使用"example"作为示例文档类型):
有一个原始文档,其中类型字段名为example_original.
对文档的后续更改都具有类型example_change和example_original文档的id作为键.此更改还将带有时间戳.
保留一个类型为example_current的doc,它是example_original的结果,所有example_change都是"applied".新的example_change文档将自动应用于此文档.
查找特定版本将包括检索example_original文档并应用所需的更改(主要是某个时间戳,但也可能是一些更改).
我应该提一下,我的用例将涉及对原始的有限数量的更改.大多数更新将包含新的原始文档.虽然这是我目前的用例,但我也会对涉及许多变更会导致的问题感兴趣.
你在这种方法中看到了什么利弊?
我使用的是JQuery Mobile,有两个版本:稳定版和旧版.我不熟悉后者.
什么是旧版本?或者与稳定版有什么区别?
建议在生产现场使用哪一个?
非常感谢
我通常使用Git进行版本控制.在我的团队中,我们并行工作,我们经常将代码提交到应用程序中.一切都很好但是Visual Studio的解决方案和项目文件.我们找到了两种方法:
两种方式都有利弊,但基本上我们每次从中央回购中获利都会挣扎.这里有一些我们发现的备用问题:(在parentesis中,参考上面的列表)
.csproj文件(2)等等.我可以使用适当的工作流程吗?
我即将发布一个我在过去几周一直在工作的Python库.我已经阅读了很多关于Python依赖项的内容,但还不是很清楚:
有些人假装你永远不应该固定你的依赖版本,因为它会阻止你的库用户升级这些依赖项.
其他一些声称你应该总是固定你的依赖版本,因为它是保证你的发布以它开发它的方式工作的唯一方式,并防止依赖的重大变化在你的库中造成严重破坏.
我不知何故去了一个混合解决方案,在那里我假设我的依赖关系使用语义版本控制并仅固定主要版本号(比如说somelib >= 2.3.0, < 3),除非主要版本号是0(语义版本控制规定这些版本被认为是易变的并且可能会破坏API,即使只有补丁号被碰撞).
截至目前,我不确定哪种方式最好.是否有官方指南(甚至可能是PEP?),它规定了有关Python依赖关系的最佳实践以及如何指定它们?
Newtonsoft.Json发布具有相同强名称的不兼容版本,仅更改文件版本.
根据MSDN:
具有相同强名称的程序集应该相同.
因此,如果我们无法控制的其他应用程序将不同版本的Newtonsoft.Json.dll放入GAC,我们的应用程序就会中断.
有没有办法强制.NET加载我们需要的特定版本?
更新:
让我更深入地解释这个问题:
在.NET中,据我所知,在CLR尝试解决它们并失败之前,没有机制来解析程序集.
只有AppDomain.AssemblyResolve事件,它仅在未解析程序集时触发.通常它就足够了.
但是在Newtonsoft.Json的情况下,它并没有解决程序集,但它只是加载错误的程序集.
发生这种情况是因为Newtonsoft.Json发布了具有相同强名称的不兼容版本.
例:
假设我们的应用程序针对NJdll编译(程序集版本1.0,文件版本1.0)
然后一些其他应用程序,将其他不兼容版本的相同dll放入GAC NJdll(程序集版本1.0,文件版本1.1)
因为它们只更改文件版本而不更改程序集版本,所以这两个程序集具有相同的强名称.
因此,对于我们的应用程序.NET尝试解析NJdll(程序集版本1.0),它会在GAC中看到dll并加载它.(因为.NET总是喜欢从GAC组装来装配"bin"文件夹)
但装载的装配是错误的.它的文件版本为1.1,与1.0版本不兼容.
因为两个程序集都具有相同的程序集版本,所以.NET看不到它们之间的任何差异.但是当它实际上尝试解决内部的某个类或成员时,它会失败,因为它在版本1.1中已更改.
并且整个应用程序因不可预测的错误而失败.
最糟糕的是,即使我的应用程序没有将newtonsoft.json.dll放入GAC,我控制之外的其他一些应用程序也会将不同版本的newtonsoft.json.dll放入GAC - 我的应用程序会因不可预测而中断例外.
所以我的问题是,在.NET加载错误之前,我可以首先加载正确的程序集吗?
更新
https://github.com/JamesNK/Newtonsoft.Json/issues/615 https://github.com/JamesNK/Newtonsoft.Json/issues/1001
这个问题的问题已经结束,评论显示Newtonsoft.Json的作者不了解.NET版本以及为什么这很重要.
.net versioning json.net global-assembly-cache .net-assembly
我已经获得了2个预编译的dll:
Common.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f3b12eb6de839f43, processorArchitecture=MSIL
Common.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=f3b12eb6de839f43, processorArchitecture=MSIL
Run Code Online (Sandbox Code Playgroud)
API差异示例:
我正在尝试将两者加载到一个项目中,以执行以下操作:
extern alias v10;
extern alias v20;
private static void UpgradeUser()
{
// Load old user
var userOld = new v10::Common.Data.UserData();
userOld.loadData("user.dat");
// Create new user
var userNew = new v20::Common.Data.UserData();
// Copy properties
userNew.FirstName = userOld._firstName;
userNew.LastName = userOld._lastName;
userNew.Age = userOld._age;
// Invoke method from v10 and v20 API
userOld.version();
userNew.DisplayVersion();
if (userNew.GetUserInfo() != userOld.getInfo())
{
throw new Exception("Discrepencies in upgrade ");
}
Console.WriteLine("Upgrade done!");
} …Run Code Online (Sandbox Code Playgroud) versioning ×10
.net ×4
c# ×3
git ×2
couchdb ×1
css ×1
dependencies ×1
javascript ×1
json.net ×1
pip ×1
python ×1
settings ×1
winforms ×1
workflow ×1