Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法

 更新时间:2014年09月06日 08:44:54   投稿:junjie  
这篇文章主要介绍了Visual Studio中根据系统区分引用64位、32位DLL动态库文件的配置方法,本文在VS2008中测试通过,其它VS版本可以参考下

原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统

调试原来的工程,由于在其中引用了“SQLite”的32位的dll,导致在64为位下程序无法运行(但是编译可以通过)

后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题

打开引用了SQLite的工程(例如叫做info)的工程文件(info.csproj),找到对SQLite引用的语句,类似如下的代码

复制代码 代码如下:

<Reference Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.dll</HintPath>
</Reference>

这里指定了引用的库的名称,路径等信息,将上面的配置内容,修改如下

复制代码 代码如下:

<Reference Condition=" '$(Platform)' == 'AnyCPU' " Include="System.Data.SQLite, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.dll</HintPath>
</Reference>

只是增加了一个Condition的限制条件,表示只在平台类型位AnyCPU的时候,按照这个路径引用dll

复制上面的配置内容,并按照如下进行修改,设置在x64平台的生成时引用的dll路径

复制代码 代码如下:
<Reference Condition=" '$(Platform)' == 'x64' " Include="System.Data.SQLite.x64, Version=1.0.65.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\libs\SQLite\System.Data.SQLite.x64.dll</HintPath>
</Reference>

最后,说一下怎样在VS中设置不同的生成平台

在工具栏的“解决方案平台”(一般这里会显示着“Any CPU”)下拉框中选择“配置管理器”,在其中添加想要的平台类型(一般就在x64,x86,Itanium中选择,不要修改默认名称)

然后在窗口下部的“项目上下文中”,在对应的项目(这里仅info项目,其他的保持AnyCPU不变)中修改平台类型(修改为X64)

然后,配置到这里,可能在项目文件中,对应新增的平台类型的一些设置不完整(我遇到编译的时候提示“OutputPath没有设置”),这个时候,进入vs的项目属性界面,稍微修改一下(改成别的,保存,再改回来)这些设置

ok,这个时候,应该就可以根据平台的类型不同,引用到对应的dll了,

在网上找到的资料说,这种方法对于msi的安装程序的制作不太好使,我不太清楚,涉及到这方面的同学,再仔细查查看。

不过,我这里提供一个可行的解决方案,那就是不要将整个项目制作到安装程序中,只是制作一个最基本的安装程序,然后通过升级来保证最新。

如果是在没有网络的环境中,那也可以将编译产出单独解压到安装目录下,以避免将整个解决方案制作成安装包。

相关文章

  • 跳一跳自动跳跃C#代码实现

    跳一跳自动跳跃C#代码实现

    这篇文章主要为大家详细介绍了跳一跳自动跳跃C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C#页面之间跳转功能的小结

    C#页面之间跳转功能的小结

    在两个ASP.NET页面之间传递值
    2013-03-03
  • 12306奇葩验证码引发思考之C#实现验证码程序

    12306奇葩验证码引发思考之C#实现验证码程序

    春运最高峰来了!明天通过网络将能买到小年夜的车票,本周四就将开售除夕日车票,但不少人被首次在春运期间使用的图片验证码搞得很火大,小编也正在对验证码进行研究,编写了由C#实现验证码程序,分享给大家
    2015-12-12
  • 在C#中使用指针的示例代码

    在C#中使用指针的示例代码

    C#向开发人员隐藏了大部分基本内存管理操作,因为它使用了垃圾回收器和引用,但是,有时候我们也需要直接访问内存,例如:进行平台调用,性能优化等等,本文给大家介绍了在C#中使用指针的示例代码,需要的朋友可以参考下
    2024-10-10
  • Unity实现QQ列表折叠菜单

    Unity实现QQ列表折叠菜单

    这篇文章主要为大家详细介绍了Unity实现QQ列表折叠菜单,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • C#中char和string的入门使用教程

    C#中char和string的入门使用教程

    这篇文章主要给大家介绍了关于C#中char和string的入门使用教程,文中通过示例代码以及图文介绍的非常详细,对大家学习或者使用C#具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • C#实现接收QQ邮件的示例代码

    C#实现接收QQ邮件的示例代码

    这篇文章主要为大家详细介绍了C#如何使用pop协议来实现一下接收QQ邮件的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • 六大设计原则之开闭原则

    六大设计原则之开闭原则

    这篇文章介绍了六大设计原则之开闭原则,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-02-02
  • C#获取程序文件相关信息的方法

    C#获取程序文件相关信息的方法

    这篇文章主要介绍了C#获取程序文件相关信息的方法,可实现获取程序版本号、版权声明、程序文本信息等,需要的朋友可以参考下
    2014-09-09
  • c#的dataset离线数据集示例

    c#的dataset离线数据集示例

    这篇文章主要介绍了c#的dataset离线数据集示例,需要的朋友可以参考下
    2014-04-04

最新评论