ASP.NET 2.0网站专案同时使C#与VB.NET之技巧

news/2024/5/11 13:40:13/文章来源:https://blog.csdn.net/wwlearn/article/details/2490742

转自:http://blog.csdn.net/dotnetcool/archive/2006/09/07/1189291.aspx

 
在以往
VS.NET 2002VS.NET 2003Visual Studio工具本身不支援多个组件档(Assembly),也就是专案编译后只会产生一个.dll组件,而一个组件只允许包含一种语言(因为系统会呼叫对应C#VB编译器进行编辑),因此在同一个专案中要使用两种语言是办不到的;但是在VS 2005因为专案支援多个组件,所以利用这个特性就可以同时使用两种以上的语言如C#VB.NET,因此.cs.vb的类别在专案中就可以直接拿来使用,直接就可以new instance,并不需要先编译成.dll档再加以引用,如此对于许多公司或程式设计师弹性变大了,算是一大福音。

   至于专案支援多个组件是如何办到的?在前面有提到ASP.NET中有许多内建特殊资料夹,如APP_CodeApp_GlobalResources等等,只要归类在这些资料夹的档案在编译时就会产生独立的组件,各位可以建立一个专案进行测试,加入类别档、资源档、Web Services等等,最后再用aspnet_comipler.exe先行编译后,再检查编译后目标路径的bin目录,里面同时包含好几个.dll档就是证据。

范例2-12 专案同时使用C#VB类别程式
而利用多个组件的原理,在VS 2005专案中可以同时使用C#VB类别程式,但仍必须遵守一些程序及技巧来达成,当然这必须祭司传授给你才行得通。


2-54 多语言专案执行画面



上面的directoryName 是对应下一个步骤csvb是所要加入的目录名称。

Step 3
:在App_Code建立C#VB目录分隔
(1)
请在网站按滑鼠右键选择【属性页】说i加入ASP.NET资料夹】诳[入「App_Code」资料夹。
(2)
接着在App_Code资料夹底下加入「CS」及「VB」两个资料夹,以作为C#VB类别各自存放的目录。



2-55 建立不同语言目录



Step 4
:加入C#VB类别程式
(1)
请在CS资料夹中加入C#类别,CSharpObject.cs类别程式如下:
01 using System;
02 public class CSharpObject
03 {
04
  public string Hello()
05
  
{
06
   
return "Hi...C#";
07
  
}
08 }

(2) 
请在VB资料夹中加入VB类别,VBObject.vb类别程式如下:

01 Imports Microsoft.VisualBasic
02
03 Public Class VBObject
04
  Public Function Hello() As String
05
   
Return "Hi...VB"
06
  
End Function
07 End Class

Step 5
:使用类别程式

请在「呼叫C#类别」及「呼叫VB类别」两个按钮加入Click事件程式:
01 //
呼叫C#类别
02 protected void btnCSharp_Click(object sender, EventArgs e)
03 {
04
  CSharpObject myCSharpObject = new CSharpObject();
05         txtMsg1.Text = myCSharpObject.Hello();
06 }
07
08 //
呼叫VB类别

09 protected void btnVB_Click(object sender, EventArgs e)
10 {
11
  VBObject myVBObject = new VBObject();
12         txtMsg2.Text = myVBObject.Hello();
13 }
程式说明:

完成后请执行看看,各位可以看到MultiLang.aspx程式的确同时使用了C#VB两种语言,并且可以直接在C#中直接呼叫VB类别产生实体;不过当然以上程式只是示范性质,您可以在类别中建构更为复杂的程式(如ADO.NET或其他)。

注:
(1)
VS.NET 2003若您专案必须使用多个组件,虽说Visual Studio本身不支援,但您可以使用Assembly Linker(AL.exe)手工来达成,并非.NET不能做。
(2)
同时使用C#VB类别程式,并非是指在同一个类别中可以穿插混合使用两种语言,如1,3,5行使用C#2,4,6行使用VB,倘若如此只会造成天下大乱。
(3) VS.NET 2003
不支援多组件多语言,而VS 2005支援,这反映出真实世界中企业或许多专业人士向微软反映需要这个功能,微软才会顺应民意加入这项技术,故大家应平心来看待这项技术,不能因自身反对或没需要,径而推论他人也不需要这项技术,或视之为洪水猛兽。
(4)
在这只是告知各位VS 2005中要如何使用两种语言,至于一个专案是否应该同时使用C#VB两种语言,它有实际面、策略面与意识型态面的议题,故要不要用则是必须贵公司或专案视本身需求去评量决策,祭司不表意见。

此外祭司要提出一个思考点,上面理论的确很精采没错,也确实能够正常执行运作,但是如何证明VS 2005真的会产生多个组件?若不能证明的话就像神学中说有神有存在,信者恒信,不信者恒不信,而比例可能各占一半;然而要证明它有点困难,因为不晓得各位有没有发现在VS 2005建置编译网站后,并不会像VS.NET 2003在专案所在路径下的Bin目录中产生一个dll组件,所以根本没法察看是否有多个组件,那怎办?嗯~还记得前面介绍过aspnet_compiler.exe先行编译这个工具吗?在此利用这个工具编译「VS2005IDE」专案,指令如下:
Aspnet_compiler –v 02VS2005Advance C:/TMP02/VS2005Advance

将编辑过后的专案会输出到C:/TMP02/VS2005Advance,接着到该路径下的Bin目录可以发现确实依目录而产生App_Subcode_cs.dllApp_Subcode_vb.dll两个组件,如此便能够证明祭司所言属实,大家该全部得信了吧!



2-56 先行编译后的多个组件(点图放大)


  即便专案没有同时混用VBC#两种语言的需求,是否这个技巧就没有其他附加价值呢?还是可以利用相同的原理技巧做出多个组件,而不必每次都叫用一个很庞大的dll组件,如此不但系统略为笨重,且又会非常耗用资源,故若专案程式十分庞大者可以利用这个技巧来产生多个组件,有意义的分解成多个较小组件可以求得更佳的系统效能。

节录自【圣殿祭司的ASP.NET 2.0专家技术手册】新书

 

 
请参考MultiLang.aspx程式,以下是步骤说明:
Step 1
:引用Microsoft.VisualBasic命名空间
若果C#专案中有使用到VB.NET的相关功能,请自行加入相关命名空间的参照,以及在VB.NET程式中Import命名空间。

Step 2
:设定Web.configC#VB目录分隔
请在Web.config档中加入下列设定:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_868378.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零打造视频播放网站(2)-后端接口设计篇

后端接口设计篇 环境:接口文档:说明:测试: 环境: centos7系统php7.0框架:thinkphp5.0服务器:nginx 接口文档: http://39.106.207.193:8000/doc 说明: 返回类型均为 JSON数据格式 测试: http://39.106.207.193:8000/play/group/2337?fromkkm3u8 [{"id": 1, &q…

从零打造视频播放网站(1)-数据采集篇

数据采集篇 1.数据库设计:2.环境:3.创建项目:4. settings.py5.爬虫编写:6.增量式爬虫:7.启动爬虫:8.总结: 1.数据库设计: source表(播放源): idnamedescparseshow自增id播放源名称播放源描述解析url展示名 video表: idtitledesctypeareathumbyeardirectorintroductionactors…

黑马就业班(02.JavaWeb+项目实战\16.JavaWeb综合项目实战手把手学习)旅游网站项目(发现案例有问题!已修正)+浏览器页面代码调试(视频45-16.00)

本文对应项目:目录:G:\idea_java_project 下的travel项目本文参考资料《综合案例笔记》笔记 1、准备工作 项目导入 将资料的空travel项目导入IDEA中。(注意导入项目的方法,选择的是pom.xml文件,参考视频1-4.00&#…

缓存、动态页面静态化、网站优化

一、缓存 缓存(Cache)技术在软件开发过程中有着广泛的用途, 它对提升软件性能和改善客户体验有很大帮助. 所谓缓存, 是指将那些经常重复的操作结果暂时存放起来, 在以后的执行过程中, 只要使用前面的暂存结果即可. 缓存技术在日常生活中随处可见, 就拿排队买票来说吧: 买票时需…

vs2008开发wap网站(一)

http://www.cnblogs.com/3stones/archive/2009/01/05/1351969.html 首先新创建个项目,打开VS2008,新建个网站项目,我们添加新项时会发现以前在vs2003或vs2005中的“移动Web窗体”项没有了,下图为vs2003和2005中的。 vs2008中就没…

关于spring 获取不到网站上的xsd的处理记录

前两天做一个项目还好好的,今天突然报出这个错误 cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element mvc:annotation-driven 应该是xml文件找不到相应的xsd了,这时候我的springmvc.xml的头部是这么…

创建网站快捷方式

直接托那个图标就可以了

网站网页通用底部

效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html><head> <meta charset"UTF-8"> <title>标题名</title> <style>*{margin:0px;padding:0px;box-sizing:border-box}body{margin:0 auto;font-size:12px;font-fam…

Linux系统中搭建LAMP动态博客网站

在新Web2.0革命中&#xff0c;博客是最早出现的&#xff0c;也被更多的人所了解。博客的中文有两重含义&#xff0c;既指撰写个人网络日志的人(Blogger)&#xff0c;也指承载个人网络日志的网站(Blog)。用全球最大博客网站Blogger.com的解释&#xff1a;“blog 可以是个人日记、…

【哔哩哔哩播放器】2020最新版高仿哔哩哔哩视频播放器网站源码

【哔哩哔哩播放器】2020最新版高仿哔哩哔哩视频播放器网站源码 Lan 2020-05-12 10:06 190 人阅读 0 条评论 2020最新版高仿哔哩哔哩视频播放器网站源码&#xff0c;支持弹幕&#xff0c;演示链接&#xff1a;点击进入 可以用于视频cms使用 使用方法 &#xff1a;域名/?url 如…

给你的网站加上随机一句,一言API调用代码

给你的网站加上随机一句&#xff0c;一言API调用代码 Lan 2020-05-19 13:24 258 人阅读 0 条评论 这个接口由萌创团队开放的&#xff0c;文档地址&#xff1a;点击进入 引用代码&#xff1a; <div class"hitokoto" style"text-align: center;color: grey; …

大型网站架构演化过程(一)

1. 初始阶段的网站架构 小型网站访问量不大&#xff0c;所以一台服务器绰绰有余&#xff0c;这时网站架构如图1所示。 2. 随着网站的业务的发展&#xff0c;数据量越来越多&#xff0c;一台服务器不能满足需求的时候&#xff0c;越来越多的用户访问导致服务器的响应越来越慢&am…

大型网站架构演化过程(二)

本文接上篇文章&#xff1a;大型网站架构演化过程&#xff08;一 &#xff09; 3. 使用应用服务器集群改善网站的并发处理能力 使用集群是网站解决高并发&#xff0c;海量数据问题的常用手段。当一台服务器的存储空间不足hi抵抗并发压力时&#xff0c;不要企图去更换更强大的服…

大型网站架构演化过程(三)

上接:大型网站架构演化过程&#xff08;二&#xff09; 6.使用分布式文件系统和分布式数据库系统 我们都知道&#xff0c;任何强大的单一服务器都无法满足大型网站持续增长的业务需求。数据库经过读写分离后&#xff0c;从一台变成两台&#xff0c;但随着业务的发展依然无法满足…

网站优化篇

网站优化篇 最近公司要大力推广官方网站&#xff0c;但是发现不论是PC网站还是手机网站的打开响应速度都比较卡顿&#xff0c;而每个人都知道官方网站&#xff0c;一般是企业对外用户打造品牌&#xff0c;进行宣传的第一道门&#xff0c;如果用户访问网站时遇到了卡顿&#xff…

利用Asp来打包网站

如何利用asp来打包网站 一、遇到的权限问题。 我们在打包网站的时候经常会遇到权限问题。因为现在的虚拟主机的安全性不断的在提高&#xff0c;很多虚拟主机都禁用了WScript.shell。因为这个对象可以执行一些cmd命令&#xff0c;对虚拟主机的安全具有很大的威胁。记得前几…

使用JFreeChart 在网站中使用走势图

生活中我们经常用到各种图表&#xff0c;走势图就是其中的一种&#xff0c;例如&#xff1a;股票走势图&#xff0c;产品价格走势图&#xff0c;某个网站访问量走势图?D?D没错&#xff0c;现在网站中使用走势图也是越来越普遍了。因为网站本身是为了发布信息而存在的&#xf…

使用JFreeChart 在网站中使用走势图

生活中我们经常用到各种图表&#xff0c;走势图就是其中的一种&#xff0c;例如&#xff1a;股票走势图&#xff0c;产品价格走势图&#xff0c;某个网站访问量走势图?D?D没错&#xff0c;现在网站中使用走势图也是越来越普遍了。因为网站本身是为了发布信息而存在的&#xf…

网站跨站点单点登录

昨天和几位朋友探讨到了这个话题&#xff0c;发现虽然单点登录&#xff0c;或者叫做独立的passport登录虽然已经有了很多实现方法&#xff0c;但是能真正了解并实现的人却并不太多&#xff0c;所以些下此文&#xff0c;希望从原理到实现&#xff0c;能让大家了解的多一些 至于什…