데이터 베이스 MySQL 튜토리얼 Silverlight3学习笔记(2):Silverlight初接触

Silverlight3学习笔记(2):Silverlight初接触

Jun 07, 2016 pm 03:00 PM
silverlight 공부하다 메모

创建Silverlight项目 当我们创建一个Silverlight项目时会提示是否创建一个承载项目,如下图所示: 由于在VS2010中已经直接支持创建ASP.NET MVC2的Web项目,所以承载Silverlight的Web项目类型有三种:ASP.NET Web应用程序项目、ASP.NET 网站及ASP.NET MVC Web


创建Silverlight项目
当我们创建一个Silverlight项目时会提示是否创建一个承载项目,如下图所示:
 Silverlight3学习笔记(2):Silverlight初接触
由于在VS2010中已经直接支持创建ASP.NET MVC2的Web项目,所以承载Silverlight的Web项目类型有三种:ASP.NET Web应用程序项目、ASP.NET 网站及ASP.NET MVC Web应用程序项目。ASP.NET Web应用程序项目可以提供与Visual Studio .NET 2003 Web 项目相同的 Web 项目语义,它的编译模型与 Visual Studio .NET 2003 编译模型类似。项目中的所有代码文件(独立文件、代码隐藏文件以及类文件)将被编译成单个程序集并存储在 Bin 目录中。由于编译会创建单个程序集,因此可以指定程序集名称和版本等属性。如果我们仅仅是开发Silverlight的话,这个可以随便选择一种类型,以便能在网页中查看Silverlight的运行效果。
VS2010界面
创建Silverlight项目成功之后可以看到如下的界面:

 Silverlight3学习笔记(2):Silverlight初接触
在VS2010中可以直接从工具箱中向Silverlight界面中拖控件。在开发ASP.NET时一个页面会分为两部分.aspx.cs和.cs,前者包含了设计代码,后者则是包含业务逻辑代码,和ASP.NET开发一样,Silverlight的项目中每个控件或者页面也是分为.xaml和.xaml.cs,.xaml代码也是包含设计代码,.xaml.cs则是包含业务逻辑代码。在每个Silverlight项目中默认会有一个app.xaml文件,这个文件有点类似于WinForm项目中的program.cs类,包含了项目启动时的设置,在创建一个Silverlight项目成功后app.xam.cs的代码如下:


可以在Application_Startup()方法中通过设置RootVisual属性来指定启动那个页面作为Silverlight的启动界面。
关于XAML
在Silverlight中使用XAML作为Silverlight的界面设计语言,XAML是一种特殊的XML格式(就像XHTML也是一种特殊的XML格式一样),现在我们不用太关注它,经过以后的练习就会慢慢理解XAML语言的特点。下面是一个普通的XAML页面代码:
  Silverlight3学习笔记(2):Silverlight初接触

Silverlight项目的编译
大家都知道.NET项目都可以使用csc.exe编译,其实VS在编译项目是也是调用了csc.exe的,所以对于平常的简单的想法的代码测试周公都是用记事本写代码然后在命令行下调用csc.exe编译。用VS编译项目最终也会调用csc.exe来编译,和以前编译.NET项目不同的是,编译Silverlight项目多加了一个命令行参数,这个命令行参数是“nostdlib”,它的作用说明如下:
Silverlight3学习笔记(2):Silverlight初接触 
从上图可以看出,使用“nostdlib”参数的作用是不引用标准库。在.NET类库中核心类库是mscorlib.dll,使用这个参数的作用就是不引用mscorlib.dll这些类(因为Silverlight要跨操作系统要支持多浏览器,所以不能带有Windows系统的特色)。尽管在Silverlight中可以使用C#或者VB.NET编程,但是Silverlight中所使用的是.NET类库的子集,在某些用法上受到限制。甚至有些类或者有些方法出现在Silverlight的运行环境中,但是这些类和这些方法并不能为开发者所用,所幸的是为了不必要的麻烦在编写代码时出现的智能感知中不会出现这些类或者这些方法。
当我们编译Silverlight项目成功之后会得到一个dll文件,它的文件结构如下:
 Silverlight3学习笔记(2):Silverlight初接触
也就是除了一个dll文件之外还会生成如下文件:
一个.pdb文件。假设Silverlight项目名为SilverlightDemo1,那个pdb文件名为SilverlightDemo1.pdb,这个文件包含了VS需要的调试信息。
一个名为AppManifest.xaml的文件。不管Silverlight项目名是什么,这个文件名总不会变,在这个文件里包含了当前Silverlight项目所需要的程序集。在本实例中AppManifest.xaml的内容如下所示:
 Silverlight3学习笔记(2):Silverlight初接触
一个测试用的html文件。假设Silverlight项目名为SilverlightDemo1,那个html文件名为SilverlightDemo1TestPage.html,即{Silverlight项目名}TestPage.html,也就是会以Silverlight项目名加TestPage作为文件名的html文件。这个文件文件演示了如何在页面中嵌入Silverlight控件,它的代码如下:


从代码中可以看到,如果浏览此页面的客户端没有安装Silverlight客户端的话,就会看到一个下载安装Silverlight客户端的提示,用户点击链接就可以跳转到微软官方网站下载Siverlight。下载完成会提示用户是否安装。也就是在下载和安装Silverlight时都会得到明确的提示,用户可以明确地选择是否下载或安装,这一点很值得国内的公司学习。国内很多以“正当”、“安全”自居的公司提供的软件总是模糊、混淆某些概念来达到自己不可告人的目的,甚至还有几款装机量上亿的软件经常扫描用户的非系统盘之外的敏感区域,这些公司都应该好好学习一下国外软件的做法。
一些dll文件。这些dll文件是运行当前Silverlight项目所需要的依赖文件。在AppManifest.xaml文件中我们看到了里面有除SilverlightDemo1.dll之外的如下文件:
System.ComponentModel.DataAnnotations.dll
System.Windows.Controls.Data.dll
System.Windows.Controls.Data.Input.dll
System.Windows.Controls.dll
System.Windows.Controls.Navigation.dll
System.Windows.Data.dll
zh-Hans/System.ComponentModel.DataAnnotations.resources.dll
zh-Hans/System.Windows.Controls.resources.dll
zh-Hans/System.Windows.Controls.Data.resources.dll
zh-Hans/System.Windows.Controls.Data.Input.resources.dll
zh-Hans/System.Windows.Controls.Navigation.resources.dll
zh-Hans/System.Windows.Data.resources.dll
在上面的文件都是运行Siverlight项目的依赖文件。其中zh-Hans文件夹中的文件都是一些资源文件,当然除了zh-Hans之中的文件之外,还有其它类似于zh-Hans文件夹的文件夹,它们里面的文件文件名和zh-Hans文件夹下的文件名一样,这些文件是语言资源文件。
说到Silverlight项目的依赖文件就不得不说一下Silverlight项目的核心文件。大家知道Siverlight程序是被下载到客户端执行的,所以需要在客户端安装Silverlight运行环境,为了方便在不同网络环境下的用户下载和安装Silverlight运行环境,所以这个运行环境要尽可能的精简(实际上只有5M),既然它被精简了所以自然不可能提供.NET Framework提供的所有功能。在Silverlight运行环境中包含了如下程序集:
mscorlib.dll:注意此mscorlib.dll非.NET Framework中的mscorlib.dll,不过在Silverlight运行环境中它提供了类似于NET Framework中的mscorlib.dll的功能,是Silverlight运行环境中核心类库(核心中的核心)。
System.dll:提供了泛型、URI处理及正则表达式相关功能的类。
System.Core.dll:提供了对LINQ的支持。
System.Net.dll:提供了网络功能,这样我们下载Web文件和创建基于Socket的网络连接。
System.Window.dll:提供在Silverlight中创建UI的类。
System.Window.Browser.dll:提供了对HTML元素交互操作的类。
System.Xml.dll:提供了XmlReader和XmlWriter两个类用以处理Xml。
可以看出在AppManifest.xaml中出现的那些除SilverlightDemo1.dll之外的dll都没有在Silverlight运行环境所提供的核心类库中。前面说了Siverlight运行环境的设计理念是尽可能使其安装和下载体积小,所以Siverlight运行环境的设计者在核心类库之外又提供了一些类,这些类提供的功能并不是在每个Silverlight应用中都会用到(如果总会用到就会放到核心类库中了),所以以附加类库的形式提供。当利用VS编译Silverlight项目的时候,VS会自动检测那些本项目需要但又不在Silverlight核心类库中的dll,所以我们会在bin目录下会看到一些“不知道怎么跑出来的”dll文件。
在这些附加类库中经常会用到的dll有如下几个:System.Window.Controls.dll、System.Window.Controls.Data.dll、System.Window.Controls.Data.Input.dll、System.Window.Controls.Input.dll及System.Windows.Controls.Navigation.dll,确实这几个文件都在我们的AppManifest.xaml文件中出现了。
一个.xap文件。同样假设Silverlight项目名为SilverlightDemo1,那个xap文件名为SilverlightDemo1.xap,这个xap文件其实是一个压缩文件,我们可以直接使用WinRAR或者其它压缩软件打开这个xap文件(如果不嫌麻烦可以将SilverlightDemo1.xap改名为SilverlightDemo1.xap.zip再用解压软件打开)。下图是使用WinRAR直接打开SilverlightDemo1.xap的情景:
 Silverlight3学习笔记(2):Silverlight初接触
从上图中我们看到了前面提到的AppManifest.xaml和SilverlightDemo1.dll文件以及上面提高的“一些”dll文件,这些dll文件都是在AppManifest.xaml中出现过的、SilverlightDemo1项目所需的附加dll。适用xap的方式发布Silverlight有两个好处:一是xap文件是压缩过的文件,可以减少网络流量以提高下载速度;二是便于部署,如果你想部署Silverlight部署到别某个网站仅仅需要将这个xap文件拷贝到网站所在的目录然后创建一个嵌入Silverlight的页面就够了,超级简单。
Silverlight项目的部署
前面讲到部署Silverlight项目需要的仅仅是一个xap文件和一个包含了如何设置Silverlight项目的网页文件。有时候出现这样的情况,创建项目的时候取了一个名字,到最后发布的时候觉得这个名字不直观,那么我们可以通过VS来设置最终生成的Silverlight项目的文件名,具体方法就是在Silverlight项目上点击鼠标右键选择“属性”,出现如下窗口:
 Silverlight3学习笔记(2):Silverlight初接触
从上图可以看出,在这个面板中我们可以指定如下跟Silverlight项目有关的东西:
应用程序集名称:即最终生成的dll文件名;
默认空间名:即创建代码文件时默认所使用的namespace名称;
启动对象名:可以看出为什么在App.xaml中的Application_Startup()方法中指定启动那个窗体就会启动那个窗体,因为默认是启动App对象的,所以它的制定才有用,如果在项目中创建了多个类似于App.xaml的文件,则会在这里出现多个选择;
生成的Silverlight应用的版本:如果安装了多个Silverlight SDK的话,这里会有多种选择;
最终生成xap文件名:可以将其改为更直观的名字。

从本篇前面的讲解可以知道Silverlight最终会被下载到客户端运行,客户端下载到的是一个xap文件,这个xap文件从本质上来说其实就是一个压缩文件。如果解压这个文件就可以得到Silverlight项目的dll文件,遇上有心人是可以利用一些反编译工具得到源代码的,如下图就是使用著名的反编译软件Reflector打开本篇中的dll文件的情形:
 Silverlight3学习笔记(2):Silverlight初接触
从图中可以看到利用这个软件可以很方便地查看没有经过任何处理的.NET程序集或者Silverlight程序集代码(以MSIL形式存储的),所以为了安全起见不要再Silverlight中保存任何隐私的、安全相关的数据。除此之外还可以对生成的程序集进行进行加密或者混淆,加密就是利用MSIL指令的一些特点使反编译工具无法反编译出源代码,混淆时是对程序集中的变量名和方法名加以变化,使其不再具有望文知义的特点从而达到了即使反编译得到了源代码也难以阅读的目的。在VS中本身就提供了一个代码混淆工具Dotfuscator的社区版,这是一个免费但功能有限的.NET代码混淆工具,它的界面如下:
 Silverlight3学习笔记(2):Silverlight初接触
如果是一般的项目,可以使用Dotfuscator进行混淆,这样可以使一般的窥探者望而生畏。
对于软件的代码保护是一个长期以来一直在探讨的话题,在本篇里提出来只是让大家有这方面的意识,而不是让大家把大部分精力都放在如何组织窥探自己的源代码上了。对软件源代码的反保护和保护一直是矛和盾的问题,二者相互竞争相互发展,不管使用什么语言都难以彻底有效地避免这个问题。
总结

2010-09-13

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 메모를 삭제하는 방법 Mar 21, 2024 pm 08:12 PM

Xiaohongshu 메모를 삭제하는 방법 Xiaohongshu 앱에서 메모를 편집할 수 있습니다. 다음으로 편집기는 Xiaohongshu 메모 삭제 방법에 대한 사용자 사진과 텍스트를 가져옵니다. 보세요! Xiaohongshu 사용 튜토리얼 Xiaohongshu 메모 삭제 방법 1. 먼저 Xiaohongshu 앱을 열고 메인 페이지로 들어가서 오른쪽 하단에 있는 [Me]를 선택하여 특별 영역으로 들어갑니다. 2. 그런 다음 내 영역에서 다음과 같이 메모 페이지를 클릭합니다. 3. 노트 페이지에 들어가서 오른쪽 상단에 있는 [점 3개]를 클릭합니다. 4. 마지막으로 기능 표시줄이 하단에 확장되고 [삭제]를 클릭하여 완료합니다.

pip를 완전히 제거하고 Python을 보다 효율적으로 사용하는 방법을 알아보세요. pip를 완전히 제거하고 Python을 보다 효율적으로 사용하는 방법을 알아보세요. Jan 16, 2024 am 09:01 AM

더 이상 pip가 필요하지 않나요? 와서 pip를 효과적으로 제거하는 방법을 알아보세요! 소개: pip는 Python 패키지를 쉽게 설치, 업그레이드 및 제거할 수 있는 Python의 패키지 관리 도구 중 하나입니다. 그러나 때로는 다른 패키지 관리 도구를 사용하고 싶거나 Python 환경을 완전히 지워야 하기 때문에 pip를 제거해야 할 수도 있습니다. 이 문서에서는 pip를 효율적으로 제거하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 1. pip 제거 방법 다음은 pip 제거의 두 가지 일반적인 방법을 소개합니다.

Xiaohongshu에 게시한 메모가 누락된 경우 어떻게 해야 합니까? 방금 보낸 메모를 찾을 수 없는 이유는 무엇인가요? Xiaohongshu에 게시한 메모가 누락된 경우 어떻게 해야 합니까? 방금 보낸 메모를 찾을 수 없는 이유는 무엇인가요? Mar 21, 2024 pm 09:30 PM

Xiaohongshu 사용자로서 우리 모두는 게시된 노트가 갑자기 사라지는 상황을 경험해 본 적이 있을 것입니다. 이는 의심할 여지 없이 혼란스럽고 걱정스러운 일입니다. 이런 경우, 우리는 어떻게 해야 합니까? 이번 글에서는 "샤오홍슈에서 발행한 노트가 누락된 경우 어떻게 해야 할까요?"라는 주제를 중심으로 자세한 답변을 드리겠습니다. 1. Xiaohongshu에서 발행한 노트가 누락된 경우 어떻게 해야 합니까? 첫째, 당황하지 마십시오. 메모가 누락된 경우 침착함을 유지하는 것이 중요하며 당황하지 마십시오. 이는 플랫폼 시스템 장애 또는 운영 오류로 인해 발생할 수 있습니다. 출시 기록을 확인하는 것은 쉽습니다. Xiaohongshu 앱을 열고 "나" → "게시" → "모든 출판물"을 클릭하면 자신의 출판 기록을 볼 수 있습니다. 여기에서는 이전에 게시된 메모를 쉽게 찾을 수 있습니다. 3.다시 게시합니다. 발견된 경우

Xiaohongshu의 노트에 제품 링크를 추가하는 방법 Xiaohongshu의 노트에 제품 링크를 추가하는 방법에 대한 튜토리얼 Xiaohongshu의 노트에 제품 링크를 추가하는 방법 Xiaohongshu의 노트에 제품 링크를 추가하는 방법에 대한 튜토리얼 Mar 12, 2024 am 10:40 AM

Xiaohongshu 노트에 제품 링크를 추가하는 방법 Xiaohongshu 앱에서는 사용자가 다양한 콘텐츠를 탐색할 수 있을 뿐만 아니라 쇼핑도 할 수 있기 때문에 이 앱에는 쇼핑 추천 및 좋은 제품 공유에 대한 콘텐츠가 많이 있습니다. 이 앱에서는 일부 쇼핑 경험을 공유하고, 협력할 판매자를 찾고, 메모에 링크를 추가하는 등의 작업도 할 수 있습니다. 이 앱은 편리할 뿐만 아니라 많은 전문가가 만들 수 있기 때문에 많은 사람들이 쇼핑에 기꺼이 이 앱을 사용합니다. 흥미로운 콘텐츠를 탐색하고 자신에게 맞는 의류 제품이 있는지 확인할 수 있습니다. 노트에 제품 링크를 추가하는 방법을 살펴보겠습니다. 샤오홍슈 노트에 제품 링크를 추가하는 방법 휴대폰 데스크톱에서 앱을 엽니다. 앱 홈페이지를 클릭하세요

matplotlib의 컬러맵에 대해 자세히 알아보기 matplotlib의 컬러맵에 대해 자세히 알아보기 Jan 09, 2024 pm 03:51 PM

matplotlib 색상표에 대해 자세히 알아보려면 특정 코드 예제가 필요합니다. 1. 소개 matplotlib는 다양한 유형의 차트를 만드는 데 사용할 수 있는 풍부한 그리기 기능 및 도구 세트를 제공합니다. 컬러맵(colormap)은 차트의 색 구성표를 결정하는 matplotlib의 중요한 개념입니다. matplotlib 색상표에 대한 심층적인 연구는 matplotlib의 그리기 기능을 더 잘 익히고 그리기를 더 편리하게 만드는 데 도움이 될 것입니다.

C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 C 언어의 매력을 밝히다: 프로그래머의 잠재력을 발견하다 Feb 24, 2024 pm 11:21 PM

C 언어 학습의 매력: 프로그래머의 잠재력을 여는 것 지속적인 기술 발전으로 컴퓨터 프로그래밍은 많은 주목을 받는 분야가 되었습니다. 많은 프로그래밍 언어 중에서 C 언어는 항상 프로그래머들에게 사랑을 받아 왔습니다. C 언어의 단순성, 효율성 및 폭넓은 적용 덕분에 많은 사람들이 프로그래밍 분야에 입문하는 첫 번째 단계는 C 언어입니다. 이 기사에서는 C 언어 학습의 매력과 C 언어 학습을 통해 프로그래머의 잠재력을 발휘하는 방법에 대해 설명합니다. 우선, C 언어 학습의 매력은 단순함에 있습니다. C언어는 다른 프로그래밍 언어에 비해

워드에서 근수를 입력하는 방법을 함께 알아볼까요? 워드에서 근수를 입력하는 방법을 함께 알아볼까요? Mar 19, 2024 pm 08:52 PM

Word에서 텍스트 내용을 편집할 때 수식 기호를 입력해야 하는 경우가 있습니다. 어떤 사람들은 Word에서 근수를 입력하는 방법을 모르기 때문에 편집자에게 Word에서 근수를 입력하는 방법에 대한 튜토리얼을 친구들과 공유해달라고 요청했습니다. 그것이 내 친구들에게 도움이 되기를 바랍니다. 먼저 컴퓨터에서 Word 소프트웨어를 연 다음 편집하려는 파일을 열고 루트 기호를 삽입해야 하는 위치로 커서를 이동합니다. 아래 그림 예를 참조하세요. 2. [삽입]을 선택한 후, 기호에서 [수식]을 선택하세요. 아래 그림의 빨간색 원과 같이 3. 아래의 [새 수식 삽입]을 선택하세요. 아래 그림의 빨간색 원과 같이 4. [부수]를 선택한 후 해당 부수를 선택합니다. 아래 그림의 빨간색 원에 표시된 대로:

Pygame 시작하기: 종합적인 설치 및 구성 튜토리얼 Pygame 시작하기: 종합적인 설치 및 구성 튜토리얼 Feb 19, 2024 pm 10:10 PM

처음부터 Pygame 배우기: 전체 설치 및 구성 튜토리얼, 특정 코드 예제 필요 소개: Pygame은 Python 프로그래밍 언어를 사용하여 개발된 오픈 소스 게임 개발 라이브러리로, 개발자가 다양한 유형을 쉽게 만들 수 있도록 풍부한 기능과 도구를 제공합니다. 게임의. 이 기사는 처음부터 Pygame을 배우는 데 도움이 될 것이며, 완전한 설치 및 구성 튜토리얼과 빠른 시작을 위한 특정 코드 예제를 제공할 것입니다. 1부: Python 및 Pygame 설치 먼저 다음 사항을 확인하세요.

See all articles