zoukankan      html  css  js  c++  java
  • 在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>libx86Noesis.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>libx86Noesis.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>libx64Noesis.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:whateverx86whatever.dll  
    C:whateverx64whatever.dll 

    您只需编辑这个协议的.csproj文件:

    <HintPath>C:whateverx86whatever.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,只是使用的节点不同。这里略过。

  • 相关阅读:
    一篇文章看清楚JDK13的特性!
    【华为云技术分享】序列特征的处理方法之一:基于注意力机制方法
    【转载】PHP简单 对象(object) 与 数组(array) 的转换
    解决URL网址中遇到%2F或%5C(正反斜杠)等特殊符号导致URL重写失效出现404的问题
    hbuilder打包APP
    win7系统访问局域网中的wamp服务器
    hbuilder检测不到夜神模拟器 -- 解决办法
    hbuilder与夜神模拟器的链接
    webstorm(10.0.2)的端口号修改
    webstorm(10.0.2)设置测试服务器 -- 局域网内其他设备访问
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3239125.html
Copyright © 2011-2022 走看看