小编dvi*_*oen的帖子

Guid.NewGuid()返回重复?

我们有一个应用程序为我们的某个服务生成模拟数据以进行测试.每个数据项都有一个唯一的Guid.但是,当我们在对模拟器进行一些次要代码更改后运行测试时,它生成的所有对象都具有相同的Guid.

创建了一个数据对象,然后是一个for循环,其中对象的属性被修改,包括一个新的唯一Guid,它通过远程处理发送到服务(可序列化,而不是编组,如果这就是你'思考),循环再做,等等.

如果我们在循环内部放置一个小的Thread.Sleep(...),它会生成唯一的id.我认为这是一个红鲱鱼.我创建了一个测试应用程序,它刚刚创建了一个guid,并没有得到一个副本.

我的理论是IL的优化方式导致了这种行为.但足够我的理论.你怎么看?我愿意接受测试的建议和方法.

更新:我的问题似乎有很多混乱,所以让我澄清一下.我不认为NewGuid()被破坏了.显然它有效.没关系!但是某处有一个bug会导致NewGuid():1)在我的循环中只调用一次2)在我的循环中每次调用但只分配一次3)其他我没想过的东西

这个bug可能出现在我的代码中(可能是MOST)或者在某个地方进行优化.

所以重申我的问题,我应该如何调试这个场景?

(谢谢你的精彩讨论,这真的帮助我澄清了我心中的问题)

更新#2:我想发布一个显示问题的例子,但那是我问题的一部分.我不能在整套应用程序(客户端和服务器)之外复制它.

这是一个相关的片段:

OrderTicket ticket = new OrderTicket(... );

for( int i = 0; i < _numOrders; i++ )
{
    ticket.CacheId = Guid.NewGuid();
    Submit( ticket );  // note that this simply makes a remoting call
}
Run Code Online (Sandbox Code Playgroud)

c# guid

10
推荐指数
2
解决办法
2万
查看次数

VDPROJ自动升级与卸载/重新安装

我见过关于VDPROJ文件生成的MSI文件的混乱行为.如果我在Visual Studio中构建我的MSI,然后右键单击并从Visual Studio中选择"安装",它将自动卸载已安装的任何版本,然后安装新的MSI.

但是,如果采用生成的MSI并直接运行它,如果已经安装了以前的版本,它将会抱怨.我必须先显式卸载它(在"添加/删除程序"中).

这是怎么回事?是否有Visual Studio执行MSI的命令行参数?

installer windows-installer vdproj

9
推荐指数
1
解决办法
1939
查看次数

VS2008中的XSD实用程序问题

我已经将一个数据集从一个csproj复制到另一个,并且新项目收到以下编译警告:"自定义工具'MSDataSetGenerator'在处理文件'Client.xsd'时失败."

在研究这个警告时,我发现如果我打开一个VS cmd提示并直接在xsd文件上运行XSD.exe,我会得到更多信息.它说:"错误:只能生成一个类或数据集."

解决此问题的命令行标志是运行:XSD/d {xsdfilename}

如果我在cmd行上运行它,它会很好地生成数据集代码.但我无法弄清楚如何让Visual Studio做到这一点.谁知道?

xml xsd.exe visual-studio-2008 visual-studio

5
推荐指数
2
解决办法
4948
查看次数