本文告诉大家,编译为 AnyCpu 和 AnyCPU(Prefer 32-bit)和 x86 有什么区别 x86 编译为 32 位的程序,如果程序运行的机器是 32 位还是 64 位,程序运行都是 32 位,但是如果在 ARM 下,x86 程序无法运行 AnyCPU 如果在 x86 系统下,运行就是 32 位程序,如果是 64 位系统下,运行就是 64 位程序。 那么 AnyCPU(Prefer 32-bit) 和 x86 有什么区别? 实际上在 ARM 系统,只能使用 AnyCPU(Prefer 32-bit) 运行 32 位程序,如果选择 x86 就无法运行。 为什么需要在 64 位的设备使用 AnyCPU(Prefer 32-bit),因为如果存在一些库只能在 32位程序运行,那么就需要运行的程序是 32 位,所以需要使用这个方法。
本文告诉大家,编译为 AnyCpu 和 AnyCPU(Prefer 32-bit)和 x86 有什么区别 x86 编译为 32 位的程序,如果程序运行的机器是 32 位还是 64 位,程序运行都是 32 位,但是如果在 ARM 下,x86 程序无法运行 AnyCPU 如果在 x86 系统下,运行就是 32 位程序,如果是 64 位系统下,运行就是 64 位程序。 那么 AnyCPU(Prefer 32-bit) 和 x86 有什么区别? 实际上在 ARM 系统,只能使用 AnyCPU(Prefer 32-bit) 运行 32 位程序,如果选择 x86 就无法运行。 为什么需要在 64 位的设备使用 AnyCPU(Prefer 32-bit),因为如果存在一些库只能在 32位程序运行,那么就需要运行的程序是 32 位,所以需要使用这个方法。
</PropertyGroup> 上面代码和下面代码是相同的 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|<em>AnyCPU</em> '"> <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <PropertyGroup Condition="'$(Configuration PlatformTarget> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|<em>AnyCPU</em> '"> <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <PropertyGroup Condition="'$(Configuration
一、遇到的问题,以及解决办法 1.1 不同平台的编译怎么办 .net可以将dll(或者说是项目)编译成x86、x64、anycpu 等至少三种平台代码。 但如果用dotnet build生成项目时,默认是anycpu,需要通过platform参数来执行平台。可是,如果你一个解决方法中即有x86项目、又有anycpu项目可怎么是好呢。 解决办法:创建两个sln文件,一个用x86平台的编译,一个用于anycpu平台的编译。 ? \SAM.Framework.anycpu.sln"; dotnet pack $anycpuPath --output $destFolder.Path /p:PackageVersion=$version --output:生成的包输出文件夹 此命令还有些不足点,如 anycpu和x86中都编译同一个项目,后者的编译会覆盖前者(感觉可以用nuget包依赖来解决)。
+ 的应用 这是 .NET Core 以及以上版本不支持的功能,勾选了无效,在 csproj 上添加如下代码也无效 <PropertyGroup Condition="'$(Platform)'=='<em>AnyCPU</em> '"> <PlatformTarget>AnyCPU</PlatformTarget> <Prefer32Bit>true</Prefer32Bit> </PropertyGroup> 没有什么非常特别的理由 project-system dotnet 5 wpf did not respect “Prefer32Bit” setting · Issue #4872 · dotnet/wpf WPF 编译为 AnyCPU
=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU FileAlignment> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|<em>AnyCPU</em> ' "> <PlatformTarget>AnyCPU</PlatformTarget> <DebugSymbols>true</DebugSymbols> <DebugType
// using CefSharp.WinForms; using System.Runtime.CompilerServices; namespace CefSharpTest { //anycpu ,exe启动先校验文件,然后从远端下载,这样避免打包生成的文件太大; 2.引用cef的库之后,编译的项目,要么是32位,要么是64位,想要做到自动兼容,需要手动写代码,这里又个issues可以看看: anycpu
解决方案 直接修改.csproj文件 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|<em>AnyCPU</em>'"> < /NoWarn> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|<em>AnyCPU</em>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net40|<em>AnyCPU</em>'"> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|Release|net40|<em>AnyCPU</em> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|Release|net45|<em>AnyCPU</em> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|Release|net40|<em>AnyCPU</em> <PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|Release|net45|<em>AnyCPU</em>
$(PlatformName) 默认值是 $(Platform),而 $(Platform) 的默认值是 AnyCPU;当这个值等于 AnyCPU 的时候,这个值就不会出现在路径中。
其他开启 LARGEADDRESSAWARE 的方法 不推荐的方法:仅适用于 .NET Framework 的旧方法 当时的那篇博客中,我提到过可通过编译成 AnyCPU (Prefer 32-bit) -- 此方法被废弃,因为不支持 .NET Core --> ++ <PlatformTarget>AnyCPU</PlatformTarget> ++ <Prefer32Bit>true</ ---- 参考资料 AnyCPU (32bit preferred) What is the purpose of the “Prefer 32-bit” setting in Visual Studio WPF 编译为 AnyCPU 和 x86 有什么区别 - 林德熙 IMAGE_FILE_LARGE_ADDRESS_AWARE Memory Limits for Windows and Windows
$(Platform) 默认是 AnyCPU,还可以是 x86、x64 或者 ARM。 $(BaseOutputPath) 输出路径的起始位置。如果没有指定,就是 bin\。 如果 AnyCPU 编译,就是 $(BaseOutputPath)$(Configuration)\;否则就是 $(BaseOutputPath)$(PlatformName)\$(Configuration 如果 AnyCPU 编译,就是 $(BaseIntermediateOutputPath)$(Configuration)\;否则就是 $(BaseIntermediateOutputPath)$(PlatformName
Update (1607 10.0.14393) 版本 如何创建本机映像 需要对咱的项目进行以下配置: 设置目标的框架平台是 4.6.2 或以上 配置目标平台是 x86 或 x64 换句话说是不要设置为 AnyCpu 其他的被引用的项目将会根据主项目的配置进行优化,即使这些项目设置是 AnyCPU 平台 设置项目方法如下: 右击解决方案,选择配置方案管理器 下拉平台里面的入口项目的配置,点击新建按钮 在新建项目平台弹出界面里面 ,新建 x86 和 x64 平台,请确保勾选了从 AnyCPU 复制选项 中文版界面请看下图 注意,设置为 AnyCPU 不支持使用本机映像编译器构建 添加 NuGet 包 这个本机映像编译器是通过
CEF(有时候引用了CEF后,项目会出现未刷新的情况,关闭重启即可在引用中看到引用的DLL了),如下图: [rz0k1tlden.png] 引用了CEF后,我们会发现,项目编译会报错;这是因为CEF不支持AnyCPU (项目属性和解决方案配置都要修改) [np27xw4qx7.png] 不过很多时候,我们的解决方案必须使用AnyCPU,那么,我们就需要修改下工程文件了。 如下图,项目在Anycpu下运行成功。
CefSharp version 51 及以上版本 CefSharp version 51之后的版本支持AnyCPU,仍然需要做简单的配置。 CefSharp version 49或者更老的版本 CefSharp version 49及之前的版本,不支持AnyCPU,因此需要指定编译架构。 否则会有以下提示: CefSharp.Common does not work correctly on AnyCPU platform.
本文主要介绍在WPF项目中使用OpenCVSharp3-AnyCPU开源类库处理图片,下面我们先来做开发前的准备工作。 准备工作 首先,我们先创建一个WPF项目。 接着,我们选择OpenCVSharp3-AnyCPU选项进行安装 。 安装了OpenCVSharp3-AnyCPU后,我们的项目会自动引入4个类库,如下图: ?
修改项目 AnyCPU => X86或者X64 nuget安装cefsharp 搜索cefsharp安装 关闭项目重启 重启项目后依赖项可见cefsharp wpf使用 添加命名空间 xmlns:
Redistributable时会让选择下载x86的还是x64的,如图: 前提是看服务器是x64的还是x86的,x64的服务器两个版本都能安装; 如果下载安装的是x64的,那么你的桌面程序就要选择anycpu x64发布,而web项目是不兼容的,不管你是如何发布的; 如果下载安装的是x86的,那么你的桌面程序就要选择x86发布,而web项目正常发布就好; *总结:如果你是web项目,你就下载x86的,发布选anycpu
AllowUnsafeBlocks> </PropertyGroup> -- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|<em>AnyCPU</em> AllowUnsafeBlocks> -- </PropertyGroup> -- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|<em>AnyCPU</em>
修改项目 AnyCPU => X86或者X64 nuget安装cefsharp 搜索cefsharp安装 关闭项目重启 重启项目后依赖项可见cefsharp wpf使用 添加命名空间 xmlns:cef