在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上安装打包项目为例进行介绍,步骤如下: ...
随机推荐
- beego学习笔记(2)
BEEGO的几个特点: 简单化 RESTful 支持.MVC 模型,可以使用 bee 工具快速地开发应用,包括监控代码修改进行热编译.自动化测试代码以及自动化打包部署. 智能化 支持智能路由.智能监控 ...
- MySQL之基础功能
一.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点: 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是 ...
- iBatis应用--控制执行SQL时的超时时间
https://blog.csdn.net/jackie_xiaonan/article/details/8459320
- IEEEXtreme 10.0 - Mysterious Maze
这是 meelo 原创的 IEEEXtreme极限编程大赛题解 Xtreme 10.0 - Mysterious Maze 题目来源 第10届IEEE极限编程大赛 https://www.hacker ...
- 元组tuple常用方法
元组tuple的功能类似与列表,元组有的功能,列表都有,列表有的,元组不一定有,下面来看看元组具有的功能: 1.count(self,value) count(self,value)统计元组中 ...
- centos7 lamp环境搭建
一.安装Apache1.安装yum -y install httpd2.开启apache服务systemctl start httpd.service3.设置apache服务开机启动systemctl ...
- Domato学习
A DOM fuzzer 转:https://github.com/google/domato Written and maintained by Ivan Fratric, ifratric@goo ...
- LibreOJ#143 质数判定 [Miller_Rabin]
题目传送门 质数判定 题目描述 判定输入的数是不是质数. 输入格式 若干行,一行一个数 x. 行数不超过 $1.5\times 10^4$ 输出格式 对于输入的每一行,如果 x是质数输出一行 Y,否则 ...
- 【Java虚拟机】JVM学习笔记之GC
JVM学习笔记二之GC GC即垃圾回收,在C++中垃圾回收由程序员自己来做,例如可以用free和delete来回收对象.而在Java中,JVM替程序员来执行垃圾回收的工作,下面看看GC的详细原理和执行 ...
- iOS 9音频应用开发基础教程
iOS 9音频应用开发基础教程(大学霸内部资料) 介绍:iOS 9音频应用开发基础教程(内部资料)是iOS 9音频应用开发专向教程.本书采用Swift 2.0语言开发基于iOS 9的音频应用.实现 ...