项目中的程序集具有标记为ComVisible(true)的类型.
构建(非提升)时,VS尝试注册该DLL并失败:
无法注册程序集"\ path\to\foo.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\CLSID {FFC174A1-CC90-4E25-A3F6-C30B03368250}"被拒绝.
我们真的不希望DLL在构建机器上注册.我们只想在为最终用户安装它时注册它.
那么可以在不注册DLL的情况下构建吗?
Vim没有内置的GUID生成器.
对于我正在进行的项目,我可以依赖Powershell,因此下面给出了一个GUID字符串:
[guid]::NewGuid().ToString()
Run Code Online (Sandbox Code Playgroud)
我在替换中称之为,如下:
%s/foo/\=system('[guid]::NewGuid().ToString()')[:2]/
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但它会为每次替换闪烁一个窗口,而且速度非常慢.
我真正想要的是一种在Vim中可移植且快速地生成GUID的方法.
我们有从三个不同角度测试的代码:
由于我们不想编写三次功能文件,似乎我们应该在Steps之间共享功能,但我无法弄清楚如何完成这项功能,除了可能在VS项目之间共享文件,这似乎一直是有点,好吧,片状.
在项目之间共享功能文件是实现这一目标的最佳方式,还是有更明智的方法?
我创建了一个.NET DLL,它使一些方法COM可见.
一种方法是有问题的.它看起来像这样:
bool Foo(byte[] a, ref byte[] b, string c, ref string d)
Run Code Online (Sandbox Code Playgroud)
当我尝试调用该方法时,VB6给出了编译错误:
标记为受限制的函数或接口,或者该函数使用Visual Basic中不支持的自动化类型.
我读过数组参数必须通过引用传递,所以我改变了签名中的第一个参数:
bool Foo(ref byte[] a, ref byte[] b, string c, ref string d)
Run Code Online (Sandbox Code Playgroud)
VB6仍然提供相同的编译错误.
如何更改签名以与VB6兼容?
com ×2
.net ×1
arrays ×1
assemblies ×1
bdd ×1
c# ×1
comvisible ×1
elevation ×1
guid ×1
powershell ×1
specflow ×1
testing ×1
uac ×1
vb6 ×1
vim ×1