有没有人尝试在已经安装了2005 Developer的机器上安装SQL Server 2008 Developer?
我不确定是否应该这样做,我需要在可预见的将来将2005年保留在这台机器上,以便轻松测试我们的应用程序.由于我有时需要获取数据库的备份文件并可供公司中的其他人使用,因此我不能仅将2008替换为2008,因为我怀疑(但不知道)数据库不是100%向后兼容的.
会出现什么样的问题?我是否需要使用实例名称安装新版本,这有用吗?我可以使用不同的端口号来区分它们吗?
我在technet上找到了这个条目:http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID = 3496209&SiteID = 17
它不仅仅是肯定你可以做到这一点,我有点怀疑这是可行的,但我需要知道在开始安装之前是否有任何我需要知道的事情.
任何人?
我读完了这篇文章:设置一个符号服务器,详细介绍了如何为我的团队设置共享符号服务器.
我想知道的是将自己的符号添加到商店中.
我的问题是:我从中获得了什么?
我们假设我有以下构建过程:
如果我添加到上面的第三点,将构建的文件添加到符号存储区的能力,这给了我什么?
如果我创建一个程序,并引用提交到存储库的二进制文件,我同时获得.dll,.pdb和.xml(intellisense支持),所以我的堆栈跟踪似乎已经包含了我需要的所有内容.
这是分发.pdb的替代品吗?
或者仅仅是因为我需要在WINDBG中打开.DMP文件并分析其堆栈,我可能根本没有可执行文件,只有其他人提供的.DMP文件?(也就是说,exectuable可能来自旧版本,我只获得.DMP文件)
有没有人知道或者知道C#中的二进制补丁生成算法实现?
基本上,比较两个文件(指定旧的和新的),并生成一个补丁文件,可用于升级旧文件以具有与新文件相同的内容.
实现必须相对较快,并使用大文件.它应该表现出O(n)或O(logn)运行时.
我自己的算法往往是糟糕的(快速但产生巨大的补丁)或缓慢(产生小补丁但具有O(n ^ 2)运行时).
任何建议或实施指针都会很好.
具体来说,该实现将用于使我们拥有一台主服务器的各种大型数据文件保持服务器同步.当主服务器数据文件发生更改时,我们还需要更新多个异地服务器.
我所做的最天真的算法,仅适用于可以保存在内存中的文件,如下所示:
这有点像压缩,没有窗口,所以它会占用大量内存.然而,它是相当快的,并且产生非常小的补丁,只要我尝试使代码输出最小.
更节省内存的算法使用窗口,但会产生更大的补丁文件.
我在本文中跳过了上述算法的细微差别,但如果有必要,我可以发布更多细节.但是,我确实觉得我需要一个不同的算法,所以改进上述算法可能不会让我足够远.
编辑#1:以下是对上述算法的更详细描述.
首先,组合这两个文件,这样你就有了一个大文件.记住两个文件之间的切点.
其次,这样做可以抓取4个字节并将其位置添加到整个文件中的所有内容的字典步骤中.
第三,从新文件开始的地方开始,尝试定位4字节的现有组合,并找到最长匹配.确保我们只考虑旧文件中的位置,或者来自新文件中较早的位置.这确保了我们可以在补丁应用期间重用旧文件和新文件中的材料.
编辑#2:上述算法的源代码
您可能会收到有关证书存在问题的警告.我不知道如何解决这个问题,因此暂时只接受证书.
源使用了我库中其余部分的许多其他类型,因此文件不是全部,但这就是算法实现.
@lomaxx,我试图为subversion中使用的算法找到一个很好的文档,叫做xdelta,但除非你已经知道算法是如何工作的,否则我发现的文件无法告诉我需要知道什么.
或者也许我只是密集...... :)
我快速浏览了你所提供的网站上的算法,遗憾的是它无法使用.二进制diff文件中的注释说:
找到一组最佳差异需要相对于输入大小的二次时间,因此它很快就会变得无法使用.
我的需求并不是最优的,所以我正在寻找更实用的解决方案.
谢谢你的答案,如果我需要它们,他会为他的工具添加一个书签.
编辑#1:注意,我会查看他的代码,看看我是否能找到一些想法,稍后我还会给他发一封电子邮件,但我已经阅读了他所引用的那本书,虽然解决方案适用于找到最佳解决方案,由于时间要求,它在使用中是不切实际的.
编辑#2:我肯定会追捕python …
我正在经历Bitbucket,如果我们切换到Mercurial ,我似乎无法找到任何看起来像我怀疑我们的存储库看起来像的Mercurial存储库.
因此,我想知道,有没有我们在这里考虑的工作流程?
我正在谈论的是我做了一个小的自动化测试.我们有14个人在同一个项目上工作,分成4个scrum团队.为了模拟14个(我选择了10个,整数)人们在代码上并行工作,使用Mercurial DVCS,推送到同一个中央主存储库,我写了一个脚本.
请注意,我通过简单地让每个虚拟人员在他自己的文件上工作来确保永远不会发生合并冲突.
这将模拟在拉动,合并和推动之前进行1次提交的本地工作人员(避免在主回购中使用2个以上的头部).可能是这个工作流程是错误的.
这是存储库现在的样子(截图+链接到repo):
可在此处找到存储库:http://hg.vkarlsen.no/hgweb.cgi/parallel_test/graph.
这看起来非常混乱,正如我所说,我似乎无法找到任何具有相似历史的存储库.通过"凌乱",我的意思是看起来项目的旧历史几乎总是有10个并行分支.接近顶部,它当然逐渐减少,但随着当前在本地存储库中工作的人推送到主服务器,它将会扩展.
所以我有两个问题:
我们正在使用Team Foundation Server,我们正在使用标签在我们的版本历史记录中创建点,其中生成了特定版本(内部或外部).
现在我们想知道特定变更集是否在特定标签之前或之后完成(因此包含在该版本中),但我们必须在错误的位置查找.这些信息通常在错误跟踪系统中提供,但这次这个字段保持打开,所以我们认为我们可以使用TFS来解决它.
文件的版本历史记录不包括应用的标签.要查找标签,我所知道的地方是使用"获取特定版本"对话框,将类型设置为标签并使用标签选择对话框查看我们制作了哪些标签,但此对话框并未告诉我变更集在应用标签之前/之后.
是唯一的方法来确定特定更改是否是该版本的一部分或不创建新工作区,将包含文件的目录映射到磁盘上的临时目录,使用"获取特定版本"对话框来提取该版本并执行此操作文件差异?
请告诉我我是多么愚蠢,并指出我正确的方向.
我希望能够从Byte []转换为Image,反之亦然.
我从这里开始这两种方法:
public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
MemoryStream ms = new MemoryStream();
imageIn.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
public Image byteArrayToImage(byte[] byteArrayIn)
{
MemoryStream ms = new MemoryStream(byteArrayIn);
Image returnImage = Image.FromStream(ms);
return returnImage;
}
Run Code Online (Sandbox Code Playgroud)
他们似乎工作,但如果我这样做:
byte[] pic = GetImageFromDb();
bool result = pic == imageToByteArray(byteArrayToImage(pic));
Run Code Online (Sandbox Code Playgroud)
我明白了result = false
!
有没有办法纠正这种方法或一些不同的功能来实现我的目标?
谢谢!
在我们正在创建的应用中,我们需要添加一些额外的屏幕来配置应用.
如果我们可以在应用程序的开始屏幕上添加额外的按钮,那将是很好的,只有在iPad没有被引导访问时才能看到.
是否可以通过引导访问检测设备当前是否正在运行,并对其启用或禁用做出反应?
如果我要求ReSharper重新格式化当前代码:
SomeMethodThatIsGivenAnAnonymousMethod(delegate
{
Test();
});
Run Code Online (Sandbox Code Playgroud)
然后它重新格式化如下:
SomeMethodThatIsGivenAnAnonymousMethod(delegate
{
Test();
});
Run Code Online (Sandbox Code Playgroud)
我最多可以哄它用delegate关键字排列大括号.有什么方法可以哄我把它缩回原来的方式吗?
我有一个值(结构实例)被转换object
为通用处理.我需要复制一下这个值.我不能明确地这样做,因为我只是拥有它,Type
并且不知道它在编译时是什么.
默认情况下,我得到一份参考文献:var copy = objectOfMyStruct;
.我想过制作一个明确的浅拷贝,MemberwiseClone()
但我不能这样做,因为它是受保护的方法,我无法修改MyStruct
.
Convert.ChangeType(objectOfMyStruct, typeOfMyStruct)
没有帮助,因为转换(实际上没有转换)发生在里面,它再次返回对象.
我怎么能这样做?
编辑:
我需要制作一个副本以保留原始值,并将其反序列化为传递给OnChangeHandler.简化的实施是:
var oldValue = type.GetValue(reference);
var newValue = oldValue; // something better is needed here
Deserialize(type, stream, ref newValue);
OnChange(oldValue, newValue);
type.SetValue(reference, newValue);
Run Code Online (Sandbox Code Playgroud)
复制是因为只发送了delta(更改),因此应该应用于原始值.
编辑2:
这个实现适用于原始类型,所以尽管int也是盒装的,我正在复制它而不是复制对它的引用.我只是不明白这一点.
这是一个需要的例子.
您可以在LINQPad中测试的此示例应该复制该结构而不将其转换回其未装箱的类型,这样当通过实现的接口调用它进行变异时,只会突变原始结构.因此问题是; 我该如何编写克隆方法?
void Main()
{
object original = new Dummy { Property = 42, Field = "Meaning of life" };
object clone = Clone(original);
((IDummy)original).Mutate(); // will modify the …
Run Code Online (Sandbox Code Playgroud) 我在这个页面上发现了类似的问题,但我似乎无法弄清楚如何解释答案或弄清楚它们是否真的重复.
以下是我发现的可能重复项,并附有评论:
在32位计算机上编译.NET 4.0框架时,SetWindowsHookEx返回0
它似乎没有返回0我的,但我注意到崩溃时报告的句柄(32位上的.NET 4.0)与运行时报告的句柄不同(32位上的.NET 3.5),像崩溃句柄= 523727,工作句柄= 172738378.
在VS2008调试器中调用SetWindowsHookEx始终返回NULL
我可以在Visual Studio外部运行时重现我的问题
这似乎是最有希望的,除了对删除的答案的评论提到我应该使用LoadLibrary和GetProcAddress来加载.NET 4.0中的user32.dll,因为有关加载程序集的更改.但是,我很确定它是我自己无法找到的模块,但我不知道这是否适用.
Hans Passant对最后一个删除答案的评论如下:
你在使用.NET 4.0吗?它的CLR改变了程序集的加载方式,不再有LoadLibrary调用,也没有模块句柄.使用GetEntryAssembly()代替另一种修复. - 汉斯帕斯特5月5日19:43
那么,这里的字是什么?你在使用.NET 4.0吗?您是否尝试使用LoadLibrary("user32.dll")来获取可用的DLL句柄? - Hans Passant 5月6日15:43
我很确定我不需要这样做,但显然我不是百分百肯定.如果我需要更改它,我留下的问题是,为什么它适用于64位操作系统,在编译时Any CPU
,但在任何配置中都不适用于32位.
如果加载.NET程序集确实发生了一些变化,那么我没有得到类库的正确句柄,我有以下问题:
背景
我在.NET 4.0中构建了一个程序,它使用带有WH_KEYBOARD_LL钩子类型的SetWindowsHookEx来捕获按键.这在我的64位Windows 7上运行良好,但在32位Windows 7上安装键盘挂钩时崩溃时出现"找不到模块".
这是我尝试过的:
我宁愿不将我的代码切换到.NET 3.5,因为我使用了一些类库来简化工作,而最新的代码只在.NET 4.0中.
如果需要,可以下载包含Visual Studio 2010项目的.ZIP文件,也可以粘贴以下两个文件.
要重新创建是否要沿着该路线前进:
然后构建并运行,测试各种配置.
using System;
using HookLib;
namespace HookTest
{
class Program
{
static void Main() …
Run Code Online (Sandbox Code Playgroud)