在这篇文章中,我们将带领您了解VisualStudio中Debug与Release以及x86、x64、AnyCPU的区别的全貌,同时,我们还将为您介绍有关.Net编译环境x86,x64,anycpu的
在这篇文章中,我们将带领您了解Visual Studio中Debug与Release以及x86、x64、Any CPU的区别的全貌,同时,我们还将为您介绍有关.Net编译环境x86,x64,anycpu的区别、andriod studio debug 带签名的release apk、asp.net – Visual Studio中Web API和Azure API APP之间的区别、Blend Visual studio 和Visual studio 的区别的知识,以帮助您更好地理解这个主题。
本文目录一览:- Visual Studio中Debug与Release以及x86、x64、Any CPU的区别
- .Net编译环境x86,x64,anycpu的区别
- andriod studio debug 带签名的release apk
- asp.net – Visual Studio中Web API和Azure API APP之间的区别
- Blend Visual studio 和Visual studio 的区别
Visual Studio中Debug与Release以及x86、x64、Any CPU的区别
Visual Studio中Debug与Release的区别:
在Visual Studio中,编译模式有2种:Debug与Release。这也是默认的两种方式,在新建一个project的时候,就已经存在这两种模式供选择。
Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。
SO:
一般都是用Release来打包发布程序,因为Release做了更多的优化,运行速度更快,适合在项目完成后部署,另外,Release打包出来的程序文件也相对来说会小一些。而Debug模式更适合在开发调试的时候使用。即:开发调试的时候使用Debug模式,打包发布程序用Release模式。
Visual Studio中x86、x64、Any CPU的区别:
1、简单的说,它们之间最直接的区别就是:x86平台编译出来的exe(可执行文件)或dll(动态链接库)都是32位的。x64对应的则是64位的。而Any CPU则是取决于当前的操作系统,若操作系统是32位的,则编译出来的程序就是32位的,若操作系统是64位的,编译出来的就是64位程序。
2、若你的启动项目,即主程序(编译出来是exe文件的)是x86平台下编译的,而它所依赖的一个项目(或动态链接库)是由x64位平台编译出来的,则会提示“未能加载文件或程序集…或它的某一个依赖性。试图加载格式不正确的程序。”之类的错误。这是因为32位程序不能加载64位的dll,更不能调用其中的类、方法和对象等。
反之,若主程序是由x64平台编译出来的,而dll是x86的呢?答案。。也是不行的!
说到这里,基本上可以确定一点:dll和主程序的生成平台只要一致就可以。
那么问题来了!若主程序是Any CPU编译的,而dll是由x86或者x64平台编译的,又或者,主程序是x86或者x64平台编译的,而dll是由Any CPU编译的呢?正确答案就是两者在“特殊情况”下都是可行的。为什么说是“特殊情况”下呢?因为第一点也提到了,Any CPU取决于操作系统,而结合第二点提到的只要dll和主程序的生成平台一致,那么也是可行的。所以,由上可知:若主程序是在Any CPU平台下编译的,那么编译dll的平台必须要和编译主程序的操作系统一致才行。若主程序是在x86或者x64平台下编译的,那么dll就必须要和主程序一致。不过有个特例:若dll由Any CPU编译的,那么这个dll就可以被32位和64位的主程序调用。这是为什么呢?请看第三点。
3、虽说Any CPU编译出来的程序取决于操作系统,但是由Any CPU编译出来dll则取决于调用它的主程序,即若主程序是32位的,那么dll也是32位的,若主程序是64位的,那么dll就是64位的。所以dll一般采用Any CPU平台编译,而主程序(exe)一般采用x86平台编译。
总结:了解了它们的区别之后,我们打包程序的时候就知道如何取舍了。一般来说,在不清楚客户的电脑是什么类型的操作系统的情况下,或者两者都有的时候,则主程序采用x86平台编译,dll采用Any CPU平台编译。若清楚的知道是64位操作系统,那么就可以都按x64平台编译了。
.Net编译环境x86,x64,anycpu的区别
一、定义
二、选择不同后的行为
三、AnyCPU(Prefer 32-bit)(看了waterlv,大水哥的博文)
这是在右击属性,选择首选32位才会使用的方法,必须使用 .net framework 4.5 以上才可以使用。在这个编译下,程序运行都是 32 位。

在 32 位系统下,运行 32 位程序
在 64 位系统下,运行 32 位程序,但是可以获得 4G 内存
在 ARM 下,运行 32 位程序
如果使用 AnyCPU 那么编译为 IL 是不需要加平台,程序在机器运行才判断机器平台,自动编译为机器可以运行的程序。
那么 AnyCPU(Prefer 32-bit) 和 x86 有什么区别?实际上在 ARM 系统,只能使用 AnyCPU(Prefer 32-bit) 运行 32 位程序,如果选择 x86 就无法运行。
为什么需要在 64 位的设备使用 AnyCPU(Prefer 32-bit),因为如果存在一些库只能在 32位程序运行,那么就需要运行的程序是 32 位,所以需要使用这个方法。
如果在运行的时候,如何判断当前的系统版本?
可以使用 Environment 来判断,Environment.Is64BitProcess
可以判断当前的程序运行的是 32 还是 64 ,通过 Environment.Is64BitOperatingSystem
可以判断系统
那么如何判断一个 dll 是 x86 还是 any cpu?
可以打开开发者命令,然后输入 corflags 判断,开发者命令一般如果是安装 vs2017 就是Developer Command Prompt for VS 2017
,通过开始就可以找到。
corflags lindexi.dll
看输出,就可以知道这个库是什么
Any CPU:
PE: PE32 32BIT: 0
x86:
PE: PE32 32BIT: 1
x64:
PE: PE32+ 32BIT: 0
四、其他编译选择
- anycpu 默认的编译
- anycpu32bitpreferred 在 .NET Framework 4.5 和以上才可以使用
- ARM 程序编译为 ARM 运行
- x64
- x86
- Itanium
如果使用命令编译,那么可以使用platform
和字符串
csc /platform:anycpu filename.cs
andriod studio debug 带签名的release apk
应用场景:
微信app授权登录,必须打包为带签名的release apk才能与微信互通,此方法便于debug。
操作:
MyApp/build.gradle文件修改:
....
apply plugin: ''com.android.application''
android {
''signingConfigs {
release {
keyAlias ''tani''
keyPassword ''不告诉你''
storePassword ''不告诉你''
storeFile file(''D:/不告诉你.jks'')
}
}''
compileSdkVersion 26
buildToolsVersion ''25.0.0''
//此处省略n个字
}
....
修改后查看 项目-》右键-》open module settings
大功告成
asp.net – Visual Studio中Web API和Azure API APP之间的区别
> Web API
> Azure API APP
我可以创建一个Web API APP并将其托管在Azure API APP中吗?那么它们存在的主要原因是什么?
解决方法
Azure API是一个精简的API模板,支持OpenAPI.
ASP.NET Web API是一个完整的ASP.NET MVC应用程序,主要用于支持API.
差异#1:Web API模板中的身份验证支持
ASP.NET Web API
支持身份验证选择(无,个人用户,工作或学校,Windows).
ASP.NET Azure API应用程序
期望客户提供代币(持票人代币或API代币).使用Azure门户配置用户(不是API令牌)的身份验证和授权.使用Azure API Management(或其他服务)来管理API令牌.
差异#2:Web API模板中的MVC支持
ASP.NET Web API
自动包含MVC以显示帮助页面.这些与OpenAPI(Swagger)自生成文档不同.
ASP.NET Azure API应用程序
不会自动包含MVC或帮助页面
差异#3:支持Web API中的UI文件
ASP.NET Web API
包括区域,内容,HomeController,字体,脚本和视图
ASP.NET Azure API应用程序
差异#4:Web API模板中的更多启动配置
ASP.NET Web API
public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterallAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } }
ASP.NET Azure API应用程序
public class WebApiApplication : System.Web.HttpApplication { protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); } }
差异#5:Azure API模板中的OpenAPI(Swagger)支持
ASP.NET Web API
public class ValuesController : ApiController { // GET api/values public IEnumerable<string> Get() { return new string[] { "value1","value2" }; } // GET api/values/5 public string Get(int id) { return "value"; } // POST api/values public void Post([FromBody]string value) { } // PUT api/values/5 public void Put(int id,[FromBody]string value) { } // DELETE api/values/5 public void Delete(int id) { } }
ASP.NET Azure API应用程序
默认情况下启用OpenAPI(Swagger). OpenAPI JSON文档位于/ swagger / docs / v1
public class ValuesController : ApiController { // GET api/values [SwaggerOperation("GetAll")] public IEnumerable<string> Get() { return new string[] { "value1","value2" }; } // GET api/values/5 [SwaggerOperation("GetById")] [SwaggerResponse(HttpStatusCode.OK)] [SwaggerResponse(HttpStatusCode.NotFound)] public string Get(int id) { return "value"; } // POST api/values [SwaggerOperation("Create")] [SwaggerResponse(HttpStatusCode.Created)] public void Post([FromBody]string value) { } // PUT api/values/5 [SwaggerOperation("Update")] [SwaggerResponse(HttpStatusCode.OK)] [SwaggerResponse(HttpStatusCode.NotFound)] public void Put(int id,[FromBody]string value) { } // DELETE api/values/5 [SwaggerOperation("Delete")] [SwaggerResponse(HttpStatusCode.OK)] [SwaggerResponse(HttpStatusCode.NotFound)] public void Delete(int id) { } }
Blend Visual studio 和Visual studio 的区别
blend for visual studio 这个并不是用于开发中写代码的,而是专门用来做WPF的界面设计的。这是为了让专业的人做专业的事,尽量让写代码的人只使用visual studio,而做界面设计的(如美工)只需要画界面。
vs是开打代码的
我们今天的关于Visual Studio中Debug与Release以及x86、x64、Any CPU的区别的分享就到这里,谢谢您的阅读,如果想了解更多关于.Net编译环境x86,x64,anycpu的区别、andriod studio debug 带签名的release apk、asp.net – Visual Studio中Web API和Azure API APP之间的区别、Blend Visual studio 和Visual studio 的区别的相关信息,可以在本站进行搜索。
本文标签: