在Visual Studio项目中根据系统平台自动引用32或64位的DLL
最近在使用Noesis.Javascript.dll,但是这个DLL是有X86与X64二种版本的,我自己的电脑是64位的,但是别人的电脑是32位的。所以在别人那里使用的时候出了问题。
在VS里怎么引用二个版本的DLL了。在网上搜索了资料。我修改的对应代码如下:(资料在后面,自己可以看)
<Reference Condition=" '$(Platform)' == 'AnyCPU' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
</Reference>
<Reference Condition=" '$(Platform)' == 'x86' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
</Reference>
<Reference Condition=" '$(Platform)' == 'x64' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
<SpecificVersion>False</SpecificVersion>
<HintPath>lib\x64\Noesis.Javascript.dll</HintPath>
</Reference>
最近把系统从WIN2008(32位)更换成WIN2008R2,在64位系统下使用原来在32位系统下开发的程序出现了异常。经调试原来是由于在其中引用了“System.Data.SQLite”的32位的dll,导致在64位下程序无法运行(但是编译可以通过) powered by 25175.net
解决步骤:
1.从http://sourceforge.net/projects/sqlite-dotnet2/files/ 下载最新的X64位DLL,编译后在64位系统上可以正常运行了,但却不能同时在32位的系统上运行。
2.寻找如何能使项目自动适应不同的平台的解决方案。
解决方案:
通过更改csproj(C#项目文件的扩展名)文件配置进行对应平台的自适应,其中${Platform}代表对应的平台
方法1.HintPath中使用${Platform}做为变量替换路径
假设你的DLL有两个平台构建,以及他们在以下位置是:
C:\whatever\x86\whatever.dll  
C:\whatever\x64\whatever.dll  
 您只需编辑这个协议的.csproj文件:
<HintPath>C:\whatever\x86\whatever.dll</HintPath>  
 为:
<HintPath>C:\whatever\${Platform}\whatever.dll</HintPath>  
 然后,您应该能够建立您的项目针对这两个平台,和MSBuild会寻求其他选择的平台,为正确的目录。
方法2:Reference节点增加Condition条件
a.将32位平台Reference节点增加Condition条件
<Reference Condition=" '$(Platform)' == 'AnyCPU' "……
b.复制32位平台Reference节点,并改为64位平台,将HintPath节点中DLL路径更换为对应的64位版本
<Reference Condition=" '$(Platform)' == 'x64' ……
方法3:ItemGroup节点增加Condition条件 ,其实现同方法2,只是使用的节点不同。这里略过。
在Visual Studio项目中根据系统平台自动引用32或64位的DLL的更多相关文章
- 修改Visual Studio项目中程序集信息默认公司名称的两种方法
		这个公司名就是安装系统时注册的单位名称.可以通过修改注册表修改 Windows 系统的注册信息,方法如下:1.在开始"运行"中输入regedit,打开注册表编辑器.2.依次展开:H ... 
- visual studio 项目中使用EF创建的数据库,后续更新数据库操作(生产已经部署,不能删除数据库重新创建)
		情景:SharePoint项目(其他类型的项目道理也一样),数据库是用EF(版本:6.0.0.0)创建的,生产环境已经使用,所以后续修改数据库,只能通过更新来实现. 下面是具体的操作方式: 1.vis ... 
- C#——Visual Studio项目中的AssemblyInfo.cs文件包含的配置信息
		Visual Studio程序集项目中的AssemblyInfo.cs文件中的内容 using System.Reflection; using System.Runtime.CompilerServ ... 
- [转] 关于VS中区分debug与release,32位与64位编译的宏定义
		在vs编程中,常常涉及到32位和64位程序的编译,怎么判断当前编译是32位编译还是64位编译?如何判断是debug下编译还是release下编译?因为之前用到,这里记录一下,省的忘了又要疯狂的goog ... 
- Visual Studio 项目中添加include, lib, dll库文件(*.h,*.lib,*.dll)
		应用程序使用外部库时需要进行加载,两种库的加载本质上都是一样:提供功能和功能的定义.vs2005 c++ 项目设置外部库方法如下: 1. 添加编译所需要(依赖)的 lib 文件 在“项目-&g ... 
- Visual Studio项目属性的生产平台,如何改为X64?
		如图,我把平台改为x64,可是按打叉,退出后,再进入项目属性,还是 x86,没变. 解决方法: 选择 Setup1项目, 选择"属性" ->选择 "配置管理器&qu ... 
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(0):专题导航 [持续更新中]
		写在前面的话 随着 Visual Studio 2013 的正式推出,ASP.NET 和 Visual Studio Web 开发工具 也发布了各自的最新版本. 新版本在构建 One ASP.NET ... 
- 在 Visual Studio 2013 中创建 ASP.NET Web 项目(1):概述 - 创建 Web 应用程序项目
		注:本文是“在 Visual Studio 2013 中创建 ASP.NET Web 项目”专题的一部分,详情参见 专题导航 . 预备知识 本专题适用于 Visual Studio 2013 及以上版 ... 
- Visual Studio 2017中如何创建安装打包项目
		从Visual Studio 2012开始,微软就不在环境中自动集成安装打包项目了,如果还想使用,需要手动下载安装,这里以在Visual Studio 2017上安装打包项目为例进行介绍,步骤如下: ... 
随机推荐
- mysql 配置数据库主从同步
			参考:https://www.cnblogs.com/kevingrace/p/6256603.html http://www.51testing.com/html/00/130600-243651. ... 
- 【LOJ】 #2008. 「SCOI2015」小凸想跑步
			题解 一道想法很简单的计算几何(由于我半平面交总是写不对,我理所当然的怀疑半平面交错了,事实上是我直线建错了) 首先我们对于两个凸包上的点设为\((x_0,y_0)\)和\((x_1,y_1)\)(逆 ... 
- 在linux通过kubeadm搭建kubernetes群集
			kubeadm是一个命令行的工具,它简化了创建和管理kubernetes cluster的步骤.kubeadm利用Docker的功能进行快速的部署,支行kubernetes master和etcd服务 ... 
- 一个完整的 JS 身份证校验代码
			一个完整的 JS 身份证校验代码 身份证号码是由 18 位数字组成的,它们分别表示: (1) 前 1.2 位数字表示: 所在省份的代码; (2) 第 3.4 位数字表示: 所在城市的代码; (3) 第 ... 
- docker-compose RabbitMQ与Nodejs接收端同时运行时的错误
			首先讲一下背景: 我现在在开发的一个项目,需要运行RabbitMQ和Nodejs接收端(amqplib库),但是在Nodejs接收端运行时,无法连接至RabbitMQ端,经常提示说 connect E ... 
- 【WPF】自定义控件之远程图片浏览
			using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ... 
- 洛谷P3639 [APIO2013] 道路费用 [生成树的特殊算法]
			题目传送门 道路费用 格式难调,题面就不放了. 分析: 这是一道要细(yan)心(jing)的生成树的好(gui)题. 首先我们看到$k$的范围非常小,那么我们就可以直接$2^k$枚举每一条加边是否选 ... 
- ssm+RESTful bbs项目后端主要设计
			小谈: 帖主妥妥的一名"中"白了哈哈哈.软工的大三狗了,也即将找工作,怀着丝丝忐忑接受社会的安排.这是第一次写博客(/汗颜),其实之前在学习探索过程中,走了不少弯路,爬过不少坑.真 ... 
- struts2框架的大致处理流程
			1,浏览器发送请求,例如请求 /mypage.action /report/myreport.pdf等. 2,核心控制器FilterDispatcher根据请求决定调用合适的Action. 3,Web ... 
- 2017/11/5 Leetcode 日记
			2017/11/5 Leetcode 日记 476. Number Complement Given a positive integer, output its complement number. ... 
