我在查找RhinoMocks中Arg选项的正确参数时遇到了问题.
我试图模拟具有ref Int32参数的MSIRecordGetString方法.目前我有:
_Api.RecordGetString(Arg<IntPtr>.Is.Anything,
Arg<Int32>.Is.Anything,
Arg<StringBuilder>.Is.Anything,
ref Arg<Int32>.Ref( ???, 0).Dummy);
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道什么??? 应该/可以替换.我知道它应该是AbstractConstraint类型的东西,但我不确定什么是有效的.难以找到正确使用的任何示例.
干杯.
相当简单的问题,有没有人知道浏览msi日志文件的良好效用?
对任何提供过滤的东西感兴趣,可以看到不同的标准和自定义操作,动作排序,属性和错误.
谢谢.
我有一个表的列需要数据类型升级.但是,由于未命名的唯一约束,运行任何alter脚都会导致错误.
我需要放弃这个约束但不幸的是我不知道这个名字.我有一个脚本,它目前列出了表上的所有唯一约束,但我需要找到如何更进一步,并将约束名称与列相关联.
Select *
From sysobjects
Where sysobjects.xtype = 'UQ' AND sysobjects.parent_obj= OBJECT_ID(N'Users')
Run Code Online (Sandbox Code Playgroud)
这回来了
UQ__Users__45F365D3
UQ__Users__46E78AOC
Run Code Online (Sandbox Code Playgroud)
我需要知道这些列链接到哪些列才能删除正确的列.我需要支持SQL 2000,2005和2008.
任何建议,将不胜感激.
谢谢Ben
sql sql-server sql-server-2005 sql-server-2000 sql-server-2008
相当直截了当的问题但似乎无法在网上找到一个例子.
目前我有以下wix片段,虽然在hkcr.gz注册表项中设置了默认值,但只是将PREV_GZ_DEFAULT_APP设置为空白字符串.
<Property Id="PREV_GZ_DEFAULT_APP">
<RegistrySearch Id="Current_GZ_DEFAULT_APP"
Root="HKCR"
Key=".gz"
Name="(Default)"
Type="raw" />
</Property>
Run Code Online (Sandbox Code Playgroud)
任何人都知道这段代码有什么问题吗?
我想断言抛出异常,然后检查抛出异常的一些属性.
我的印象是我可以做以下事情:
ICommand command = CreateCommandObj();
Assert.That( () => command.DoWork(), Throws.TypeOf<ArgumentException>(),
Has.Property("ParamName").EqualTo("myParam") &
Has.Property("Message").EqualTo("myMessage") );
Run Code Online (Sandbox Code Playgroud)
然而,这甚至没有编译和查看Assert的预期参数.我看不出我怎么能这样做?我确定我以前用过这个......
注意上面是一个人为的例子来说明这一点,忽略我正在寻找一个除了任何参数之外的方法的ArgumentException的事实:)
任何帮助赞赏.
1)无法将lambda表达式转换为'object'类型,因为它不是委托类型.
在使用MSI Interop API时,我遇到了一些导致应用程序崩溃的异常行为.这很简单,可以"处理"问题,但我想更多地了解"为什么"这种情况正在发生.
我对MSIEnumRelatedProducts的第一次调用返回值0并正确地将我的字符串缓冲区设置为productcode.我的理解是,只有当给定的升级代码(作为parm传递给方法)当前安装了"相关的系列产品"时才会发生这种情况,否则它将返回259 ERROR_NO_MORE_ITEMS.
但是,当我随后使用相同的产品代码调用MSIGetProductInfo时,我得到返回值1605,"此操作仅对当前安装的产品有效.".
在这种情况下,有没有人有任何想法?它在一台机器上是100%可重复的,但我还没有设法在另一台机器上获得再现步骤.
我们所有的产品都使用Wix属性"AllUsers = 1"构建,因此应该为所有用户安装产品,而不仅仅是一个.
任何想法/建议表示赞赏.
谢谢Ben
更新: 我注意到在运行问题msi包时记录了以下行:
MSI(s)(88:68)[12:15:50:235]:FindRelatedProducts:无法读取产品'{840C ... etc ..... 96}'的ASSIGNMENTTYPE信息.跳绳...
有谁知道这可能意味着什么?
更新:代码示例.
do
{
result = _MSIApi.EnumRelatedProducts(upgradeCode.ToString("B"), 0,
productIndex, productCode);
if (result == MSIApi.ERROR_BAD_CONFIGURATION ||
result == MSIApi.ERROR_INVALID_PARAMETER ||
result == MSIApi.ERROR_NOT_ENOUGH_MEMORY)
{
throw new MSIInteropException("Failed to check for related products",
new Win32Exception((Int32)result));
}
if(!String.IsNullOrEmpty(productCode.ToString()))
{
Int32 size = 255;
StringBuilder buffer = new StringBuilder(size);
Int32 result = (Int32)_MSIApi.GetProductInfo(productCode,
MSIApi.INSTALLPROPERTY_VERSIONSTRING,
buffer,
ref size);
if (result != MSIApi.ERROR_SUCCESS)
{
throw new MSIInteropException("Failed …Run Code Online (Sandbox Code Playgroud) c# ×3
installer ×2
unit-testing ×2
wix ×2
c++ ×1
nunit ×1
rhino-mocks ×1
sql ×1
sql-server ×1
winapi ×1