C# DBEntry插件访问数据库在不同电脑报错 解决方法

错误提示1:

错误 18 未找到“ProcessorTask”任务。请检查下列各项: 1.) 项目文件中的任务名称与任务类的名称相同。2.) 任务类为“public”且实现 Microsoft.Build.Framework.ITask 接口。3.) 在项目文件中或位于“C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319”目录的 *.tasks 文件中使用 <UsingTask> 正确声明了该任务。C:\测试\SolutionTestOracle\DbEntryClassLibrary1\DbEntryClassLibrary1.csproj68 5 DbEntryClassLibrary1



这个错误是我在64位系统调试正常,放到目标机器X86系统平台编译报错


解决方法,找到数据库工程中的 这个文件 DbEntryClassLibrary1  68行左右有个 

<UsingTask TaskName="ProcessorTask" AssemblyFile="$(DbEntryPath)\Lephone.MSBuild.dll" />

将Lephone.MSBuild.dll改成Leafing.MSBuild.dll


注意,这里修改的前提是确保你的DBEntry的安装目录下有这个DLL,我的安装目录C:\Program Files (x86)\LephoneStudio\DbEntry4

暂时我发现Lephone是64位环境下用的,Leafing是X86环境下用的,还有其他带有这两种不同前缀的文件。

总之就是把刚刚那个工程文件里的路径,指到你文件夹中有的那个XXXX.MSBuild.dll




错误提示2


错误 17 GenerateHandler for Model : DbEntryClassLibrary1.Models.TblUser
System.BadImageFormatException: 未能加载文件或程序集“file:///G:\sjx\测试工程\SolutionTestOracle\DbEntryClassLibrary1\obj\Debug\DbEntryClassLibrary1.bak”或它的某一个依赖项。试图加载格式不正确的程序。
文件名:“file:///G:\sjx\测试工程\SolutionTestOracle\DbEntryClassLibrary1\obj\Debug\DbEntryClassLibrary1.bak”
   在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
   在 System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
   在 System.Reflection.Assembly.LoadFrom(String assemblyFile)
   在 Lephone.Processor.AssemblyProcessor.GenerateModelHandler()
   在 Lephone.Processor.Program.Process(String[] args)
   在 Lephone.Processor.Program.Main(String[] args)


警告: 程序集绑定日志记录被关闭。
要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD)设置为 1。
注意: 会有一些与程序集绑定失败日志记录关联的性能损失。
要关闭此功能,请移除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。


G:\sjx\测试工程\SolutionTestOracle\DbEntryClassLibrary1\DbEntryClassLibrary1.csproj69


这个错误是我在64位系统环境下编译数据库工程,目标平台选的X86,报出的错误


解决方法,同样的,错误的原因其实还是那个文件,虽然路径中的文件是有的,但是平台对不上,这时候就需要把X86平台下面的一套前缀为Leafing的文件拷贝过来(我是都拷贝过来了不止这一个)这个文件在不同平台安装DBEntry的时候会根据系统安装不同的文件。然后把文件中指向的文件名改成Leafing.MSBuild.dll就OK了。

2016年10月13日又做了测试,发现无论32位还是64位机下都是用的Lephone,有时候更换成Leafing可以解决编译报错的情况,但是实际用的时候还会出现问题。

此处还是建议用Lephone吧。如果报错,更大一部分考虑数据库语句等数据库问题。

感觉网上这方面资料很有限,能找到一些都是英文的,外语渣表示无力。现在解决了希望能帮助遇到同样问题的人。


至于这种调用数据库的方法,我也不知道好坏,毕竟半路初学,这里不做探讨,可能以后有更好用的就废弃了这个方法,更新换代是常态。







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值