我编写了一个使用sqlite的应用程序,它在大多数系统上运行良好.它是用C#编写的,唯一的非框架程序集是sqlite,它包含在System.Data.SQLite.dll中.
我在所有机器上以相同的方式部署它(复制粘贴exe文件,数据库文件和System.Data.SQLite文件).它适用于我所有的PC以及我尝试过的大多数PC.
但后来我得到报告说,对某些人来说,它会抛出以下异常:
无法加载文件或程序集'System.Data.SQLite,Version = 1.0.65.0,Culture = neutral,PublicKeyToken = db937bc2d44ff139'或其依赖项之一.尝试加载格式不正确的程序.
现在我已确保dll文件与应用程序exe文件位于同一文件夹中.它是相同的dll,具有与上面的异常消息中所述相同的版本.
我真的对此感到困惑,所以我创建了一个新的虚拟机,在其上安装了Windows 7专业版,并且只是复制粘贴文件,并且事情有效.因此,如果它在一个新窗口上工作,我无法想象其他PC可能会丢失什么...
注意:项目抛出异常的其中两台机器也运行Windows 7 proffesional.
我真的很感激这方面的任何帮助,因为我是新鲜的想法......
我有一个List,我需要一个IEnumerable,但List.GetEnumerator()返回List.Enumerator ...
是否有一种简单的方法来获取(转换为?)IEnumerator?(目前我用循环解决了这个问题,但是我觉得投射枚举器会是一个更好的解决方案)...
我有一个UWP应用程序(C#)TextBox.文本框绑定到属性,有两种方式:
Text="{Binding NameFilterString, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Run Code Online (Sandbox Code Playgroud)
当我输入TextBox"删除按钮" - 右角的小x - 出现.单击它可以TextBox按预期清除文本和属性值.
当属性更改时,TextBox'文本已正确更新,但不会显示删除按钮.我可以以某种方式让它可见吗?无论是通过财产还是以某种方式"刷新"它?
CE框架上是否也提供了扩展方法?我有一个字符串的扩展方法,在Windows窗体项目中工作正常,但它不会在PocketPC应用程序中构建.
我认为这很容易找到,但我无法在PocketPC上找到有关扩展方法的任何信息.
编辑:哎呀这是我的错误.我在Visual Studio 2008中编写了扩展方法,但PocketPC项目是在Visual Studio 2005中编译的,我没有意识到.那是我生命中的一小时,我永远不会回来.无论如何,谢谢大家的答案.
我在设置我的第一个自动构建服务器的过程中...到目前为止,一切都进展顺利,CruiseControl.NET正确地检查出来自VisualSVN的所有nececery文件并构建解决方案......但是,这就是我的地方遇到问题......
首先设置构建服务器的一个重要原因是因为我需要使用我的项目/安装文件来定位x86和x64.我无法找到这样做的方法.到目前为止这是我的配置文件(相关位):
<tasks>
<devenv>
<solutionfile>ProjectName.sln</solutionfile>
<configuration>Release</configuration>
<buildtype>Rebuild</buildtype>
<project>ProjectName</project>
<executable>C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\devenv.com</executable>
<buildTimeoutSeconds>600</buildTimeoutSeconds>
<version>VS2010</version>
</devenv>
</tasks>
Run Code Online (Sandbox Code Playgroud)
这是正常的,但我希望CruiseControl.NET构建它两次,一次用于目标平台x86,一次用于x64.我怎样才能做到这一点?
我怀疑我需要在配置块中添加一个额外的参数,但似乎没有任何工作,我(奇怪的是)无法找到这个功能的例子...
谢谢你的帮助...
有谁知道诺基亚成像SDK是否限制/限制为诺基亚硬件?换句话说,如果我使用SDK创建Windows Phone 8应用程序,该应用程序将在HTC或Samsung设备上运行吗?
我没有在诺基亚开发者网站上看到任何提及硬件/硬件合作伙伴限制的具体措辞.
我正在开始编写应用程序的过程,其中一部分是解码条形码,但是我的开始不好.我不是条形码专家,这不是常见的条形码类型,所以我遇到了麻烦.我无法弄清楚这是什么类型的条形码,我必须解码.
我查看了维基百科和其他一些网站,其中包含不同类型条形码的视觉描述(以及如何识别它们),但我无法识别它.请注意,我已经尝试了几个免费条形码解码程序,他们都无法解码.
这是条形码的图片:
替代文字http://www.shrani.si/f/2B/4p/4UCVyP72/barcode.jpg
我希望你们中的一个人能认出来.此外,如果有人之前已经使用过它并且知道可以解码它们的库(从图像中),我很想听听它们.
我非常感谢我能收到的任何其他指示.谢谢.
我在visual studio 2008中有一个部署项目,它安装了几个C#项目.除其他外,我希望它将项目汇编版本写入注册表.
有没有办法自动找出项目汇编版本(用AssemblyInfo.cs编写)并将其写为注册表属性的值?
如果没有,有没有办法比手工更好地做到这一点?重要的是这些值是正确的,因为我们的更新软件使用它们.
谢谢.
编辑:我不确定我的问题是否完全清楚.我不想得到这个数字并将其存储到字符串中.我想用Deployment Projects注册表编辑器将它写入注册表(不确定这是否是官方名称,您可以通过右键单击解决方案资源管理器中的部署项目并导航到View-> Registry来实现它)
我有一个带有以下签名的非托管C++函数:
int function(char* param, int ret)
Run Code Online (Sandbox Code Playgroud)
我试图用C#调用它:
unsafe delegate int MyFunc(char* param, int ret);
Run Code Online (Sandbox Code Playgroud)
...
int Module = LoadLibrary("fullpathToUnamanagedDll");
IntPtr pProc = GetProcAddress(Module, "functionName");
MyFunc func = (MyFunc)System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(pProc, typeof(MyFunc));
unsafe
{
char* param = null;
int ret = 0;
int result = func(param, ret);
}
Run Code Online (Sandbox Code Playgroud)
据我所知,从旧的C++项目规范中,param为null ,ret为0 都是函数的有效输入.当我尝试调用它似乎工作,但退出时我得到以下错误:
检测到PInvokeStackImbalance
对PInvoke函数'... :: Invoke'的调用使堆栈失去平衡.这很可能是因为托管PInvoke签名与非托管目标签名不匹配.检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配.
我已经尝试了几乎任何我能想到的东西(不安全是最后的手段),但是我找不到任何方法来运行该函数而不会得到不平衡的堆栈.还有什么我可以尝试的吗?
我使用指针来指定某种"共享内存",我用它来在不同的进程/线程之间交换数据.现在我想对共享缓冲区的内容进行十六进制转储.有谁知道这是怎么做到的吗?
谢谢,R