기본적으로 ClickOnce 애플리케이션에 포함된 모든 어셈블리는 애플리케이션을 처음 실행할 때 다운로드됩니다. 그러나 소수의 사용자가 사용하는 일부 애플리케이션이 있을 수 있습니다. 이 경우 해당 형식 중 하나를 만들 때에만 어셈블리를 다운로드하고자 할 수 있습니다. 다음 연습에서는 애플리케이션의 특정 어셈블리를 "선택 사항"으로 표시하는 방법 및 CLR(공용 언어 런타임)에서 요청할 때System.Deployment.Application네임스페이스에 있는 클래스를 사용하여 이를 다운로드하는 방법을 설명합니다.
참고
이 절차를 사용하려면 완전 신뢰 상태에서 애플리케이션을 실행해야 합니다.
사전 요구 사항
이 연습을 완료하려면 다음 구성 요소 중 하나가 필요합니다.
Windows SDK. Windows SDK는 Microsoft 다운로드 센터에서 다운로드할 수 있습니다.
Visual Studio.
프로젝트 만들기
주문형 어셈블리를 사용하는 프로젝트를 만들려면
ClickOnceOnDemand라는 디렉터리를 만듭니다.
Windows SDK 명령 프롬프트 또는 Visual Studio 명령 프롬프트를 엽니다.
ClickOnceOnDemand 디렉터리로 변경합니다.
다음 명령을 사용하여 퍼블릭/프라이빗 키 쌍을 생성합니다.
sn -k TestKey.snk
cmd복사
메모장 또는 다른 텍스트 편집기를 사용하여Message라는 단일 속성을 사용하여DynamicClass라는 클래스를 정의합니다.
using System;
using System.Collections.Generic;
using System.Text;
namespace Microsoft.Samples.ClickOnceOnDemand
{
public class DynamicClass
{
public DynamicClass() {}
public string Message
{
get
{
return ("Hello, world!");
}
}
}
}
C#복사
사용하는 언어에 따라ClickOnceLibrary.cs또는ClickOnceLibrary.vb라는 파일로 텍스트를ClickOnceOnDemand디렉터리에 저장합니다.
텍스트 편집기를 사용하여 새 파일을 만들고 다음 코드를 입력합니다. 이 코드는 필요한 경우 ClickOnceLibrary 어셈블리를 다운로드하는 Windows Forms 애플리케이션을 만듭니다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.Deployment.Application;
using Microsoft.Samples.ClickOnceOnDemand;
namespace ClickOnceOnDemand
{
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand, Unrestricted=true)]
public class Form1 : Form
{
// Maintain a dictionary mapping DLL names to download file groups. This is trivial for this sample,
// but will be important in real-world applications where a feature is spread across multiple DLLs,
// and you want to download all DLLs for that feature in one shot.
Dictionary<String, String> DllMapping = new Dictionary<String, String>();
public static void Main()
{
Form1 NewForm = new Form1();
Application.Run(NewForm);
}
public Form1()
{
// Configure form.
this.Size = new Size(500, 200);
Button getAssemblyButton = new Button();
getAssemblyButton.Size = new Size(130, getAssemblyButton.Size.Height);
getAssemblyButton.Text = "Test Assembly";
getAssemblyButton.Location = new Point(50, 50);
this.Controls.Add(getAssemblyButton);
getAssemblyButton.Click += new EventHandler(getAssemblyButton_Click);
DllMapping["ClickOnceLibrary"] = "ClickOnceLibrary";
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
/*
* Use ClickOnce APIs to download the assembly on demand.
*/
private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
Assembly newAssembly = null;
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment;
// Get the DLL name from the Name argument.
string[] nameParts = args.Name.Split(',');
string dllName = nameParts[0];
string downloadGroupName = DllMapping[dllName];
try
{
deploy.DownloadFileGroup(downloadGroupName);
}
catch (DeploymentException de)
{
MessageBox.Show("Downloading file group failed. Group name: " + downloadGroupName + "; DLL name: " + args.Name);
throw (de);
}
// Load the assembly.
// Assembly.Load() doesn't work here, as the previous failure to load the assembly
// is cached by the CLR. LoadFrom() is not recommended. Use LoadFile() instead.
try
{
newAssembly = Assembly.LoadFile(Application.StartupPath + @"\" + dllName + ".dll," +
"Version=1.0.0.0, Culture=en, PublicKeyToken=03689116d3a4ae33");
}
catch (Exception e)
{
throw (e);
}
}
else
{
//Major error - not running under ClickOnce, but missing assembly. Don't know how to recover.
throw (new Exception("Cannot load assemblies dynamically - application is not deployed using ClickOnce."));
}
return (newAssembly);
}
private void getAssemblyButton_Click(object sender, EventArgs e)
{
DynamicClass dc = new DynamicClass();
MessageBox.Show("Message: " + dc.Message);
}
}
}
게시 마법사를 사용하여 처음으로 ClickOnce 애플리케이션을 게시하는 방법을 알아봅니다. Project 디자이너의 게시 페이지에서 나중에 변경합니다.
ClickOnce 앱 수동 배포 - Visual Studio (Windows)
명령줄 버전 또는 매니페스트 생성 및 편집 도구의 그래픽 버전 중 하나를 사용 하 여 ClickOnce 배포를 만드는 방법에 대해 알아봅니다.
로컬 & 원격 데이터 액세스(ClickOnce 앱) - Visual Studio (Windows)
로컬 및 원격으로 데이터를 읽고 쓰기 위해 ClickOnce 제공하는 다양한 옵션에 대해 알아봅니다.
ClickOnce 및 응용 프로그램 설정 - Visual Studio (Windows)
응용 프로그램 설정 파일이 ClickOnce 응용 프로그램에서 작동 하는 방법 및 사용자가 다음 버전으로 업그레이드 하는 경우 설정 ClickOnce 마이그레이션하는 방법에 대해 알아봅니다.
ClickOnce 업데이트 전략 선택 - Visual Studio (Windows)
ClickOnce 애플리케이션에서 자동 업데이트를 지원하는 방법과 사용할 수 있는 업데이트 전략을 알아봅니다.
ClickOnce 응용 프로그램에 대 한 코드 액세스 보안 - Visual Studio (Windows)
ClickOnce 응용 프로그램에 대 한 코드 액세스 보안 및 코드 액세스 보안 권한을 구성 하는 방법에 대해 알아봅니다.
ClickOnce 애플리케이션 보안 - Visual Studio (Windows)
ClickOnce 응용 프로그램에 대 한 코드에 대 한 액세스를 제한할 수 있는 .NET Framework의 코드 액세스 보안 제약 조건에 대 한 영향에 대해 알아봅니다.
ApplicationDeployment 클래스 (System.Deployment.Application)
현재 배포를 프로그래밍 방식으로 업데이트하도록 지원하고 요청 시에 파일을 다운로드하도록 처리합니다.Supports updates of the current deployment programmatically, and handles on-demand downloading of files. 이 클래스는 상속될 수 없습니다.This class cannot be inherited.
ORA-01000: maximum open cursors exceeded ORA-01000: 최대 열기 커서 수를 초과했습니다
--sys나 system 유저로 접속하여 현재 설정된 커서 개수를 확인 한다.
show parameter open_cursors
--현재 사용중인 섹션의 커서 (100개 초과) 확인
select a.sid, s.process, s.machine, s.module, s.action, count(*) as cnt
from V$OPEN_CURSOR a, V$SESSION s
where s.sid = a.sid
group by a.sid, s.process, s.machine, s.module, s.action
having count(*) > 100
order by count(*) desc;
--특정 SID 기준 조회
select * from V$OPEN_CURSOR where sid = 4;
--커서 개수 재설정
alter system set open_cursors = 4000 scope=both;
EXCHANGE SERVER 2010 이전 릴리스의 빌드 번호제품 이름릴리스 날짜빌드 번호(짧은 형식)빌드 번호(긴 형식)
Exchange Server 2010 SP2용 업데이트 롤업 8
2013년 12월 9일
14.2.390.3
14.02.0390.003
Exchange Server 2010 SP2용 업데이트 롤업 7
2013년 8월 3일
14.2.375.0
14.02.0375.000
Exchange Server 2010 SP2용 업데이트 롤업 6
2013년 2월 12일
14.2.342.3
14.02.0342.003
Exchange Server 2010 SP2용 업데이트 롤업 5 v2
2012년 12월 10일
14.2.328.10
14.02.0328.010
Exchange Server 2010 SP2용 업데이트 롤업 5
2012년 11월 13일
14.3.328.5
14.03.0328.005
Exchange Server 2010 SP2용 업데이트 롤업 4 v2
2012년 10월 9일
14.2.318.4
14.02.0318.004
Exchange Server 2010 SP2용 업데이트 롤업 4
2012년 8월 13일
14.2.318.2
14.02.0318.002
Exchange Server 2010 SP2용 업데이트 롤업 3
2012년 5월 29일
14.2.309.2
14.02.0309.002
Exchange Server 2010 SP2용 업데이트 롤업 2
2012년 4월 16일
14.2.298.4
14.02.0298.004
Exchange Server 2010 SP2용 업데이트 롤업 1
2012년 2월 13일
14.2.283.3
14.02.0283.003
Exchange Server 2010 SP2
2011년 12월 4일
14.2.247.5
14.02.0247.005
Exchange Server 2010 SP1용 업데이트 롤업 8
2012년 12월 10일
14.1.438.0
14.01.0438.000
Exchange Server 2010 SP1용 업데이트 롤업 7 v3
2012년 11월 13일
14.1.421.3
14.01.0421.003
Exchange Server 2010 SP1용 업데이트 롤업 7 v2
2012년 10월 10일
14.1.421.2
14.01.0421.002
Exchange Server 2010 SP1용 업데이트 롤업 7
2012년 8월 8일
14.1.421.0
14.01.0421.000
Exchange Server 2010 SP1용 업데이트 롤업 6
2011년 10월 27일
14.1.355.2
14.01.0355.002
Exchange Server 2010 SP1용 업데이트 롤업 5
2011년 8월 23일
14.1.339.1
14.01.0339.001
Exchange Server 2010 SP1용 업데이트 롤업 4
2011년 7월 27일
14.1.323.6
14.01.0323.006
Exchange Server 2010 SP1용 업데이트 롤업 3
2011년 4월 6일
14.1.289.7
14.01.0289.007
Exchange Server 2010 SP1용 업데이트 롤업 2
2010년 12월 9일
14.1.270.1
14.01.0270.001
Exchange Server 2010 SP1용 업데이트 롤업 1
2010년 10월 4일
14.1.255.2
14.01.0255.002
Exchange Server 2010 SP1
2010년 8월 23일
14.1.218.15
14.01.0218.015
Exchange Server 2010용 업데이트 롤업 5
2010년 12월 13일
14.0.726.0
14.00.0726.000
Exchange Server 2010용 업데이트 롤업 4
2010년 6월 10일
14.0.702.1
14.00.0702.001
Exchange Server 2010용 업데이트 롤업 3
2010년 4월 13일
14.0.694.0
14.00.0694.000
Exchange Server 2010용 업데이트 롤업 2
2010년 3월 4일
14.0.689.0
14.00.0689.000
Exchange Server 2010용 업데이트 롤업 1
2009년 12월 9일
14.0.682.1
14.00.0682.001
Exchange Server 2010 RTM
2009년 11월 9일
14.0.639.21
14.00.0639.021
Exchange Server 2007
이 섹션의 표에서는 각 Microsoft Exchange Server 2007 버전의 빌드 번호와 일반적인 릴리스 날짜가 제공됩니다.
참고
Exchange Server 2007 SP1에 대한 버전 정보는 Exchange 관리 콘솔, Exchange 관리 셸 및Exchange Server 2007 도움말대화 상자에 명확하게 표시되어 있습니다. 그러나 Exchange 2007 RTM 버전을 실행 중인 Edge 전송 서버에 Exchange 2007 SP1을 적용한 후 Edge 전송 서버를 Active Directory 사이트에 다시 구독하지 않으면 Exchange Management Console에 Edge 전송 서버의 버전 정보가 업데이트되지 않습니다. 이는 Edge 전송 서버는 구성 정보를 사용하여 Active Directory를 직접 업데이트하지 않기 때문입니다. 대신 Edge 구독을 만드는 동안 Edge 전송 서버의 버전 정보가 Active Directory에 기록됩니다.
EXCHANGE SERVER 2007제품 이름릴리스 날짜빌드 번호(짧은 형식)빌드 번호(긴 형식)
Exchange Server 2007 SP3용 업데이트 롤업 23
2017년 3월 21일
8.3.517.0
8.03.0517.000
Exchange Server 2007 SP3용 업데이트 롤업 22
2016년 12월 13일
8.3.502.0
8.03.0502.000
Exchange Server 2007 SP3용 업데이트 롤업 21
2016년 9월 20일
8.3.485.1
8.03.0485.001
Exchange Server 2007 SP3용 업데이트 롤업 20
2016년 6월 21일
8.3.468.0
8.03.0468.000
Exchange Server 2007 SP3용 업데이트 롤업 19
2016년 3월 15일
8.3.459.0
8.03.0459.000
Exchange Server 2007 SP3용 업데이트 롤업 18
2015년 12월
8.3.445.0
8.03.0445.000
Exchange Server 2007 SP3용 업데이트 롤업 17
2015년 6월 17일
8.3.417.1
8.03.0417.001
Exchange Server 2007 SP3용 업데이트 롤업 16
2015년 3월 17일
8.3.406.0
8.03.0406.000
Exchange Server 2007 SP3용 업데이트 롤업 15
2014년 12월 9일
8.3.389.2
8.03.0389.002
Exchange Server 2007 SP3용 업데이트 롤업 14
2014년 8월 26일
8.3.379.2
8.03.0379.002
Exchange Server 2007 SP3용 업데이트 롤업 13
2014년 2월 24일
8.3.348.2
8.03.0348.002
Exchange Server 2007 SP3용 업데이트 롤업 12
2013년 12월 9일
8.3.342.4
8.03.0342.004
Exchange Server 2007 SP3용 업데이트 롤업 11
2013년 8월 13일
8.3.327.1
8.03.0327.001
Exchange Server 2007 SP3용 업데이트 롤업 10
2013년 2월 11일
8.3.298.3
8.03.0298.003
Exchange Server 2007 SP3용 업데이트 롤업 9
2012년 12월 10일
8.3.297.2
8.03.0297.002
Exchange Server 2007 SP3용 업데이트 롤업 8-v3
2012년 11월 13일
8.3.279.6
8.03.0279.006
Exchange Server 2007 SP3용 업데이트 롤업 8-v2
2012년 10월 9일
8.3.279.5
8.03.0279.005
Exchange Server 2007 SP3용 업데이트 롤업 8
2012년 8월 13일
8.3.279.3
8.03.0279.003
Exchange Server 2007 SP3용 업데이트 롤업 7
2012년 4월 16일
8.3.264.0
8.03.0264.000
Exchange Server 2007 SP3용 업데이트 롤업 6
2012년 1월 26일
8.3.245.2
8.03.0245.002
Exchange Server 2007 SP3용 업데이트 롤업 5
2011년 9월 21일
8.3.213.1
8.03.0213.001
Exchange Server 2007 SP3용 업데이트 롤업 4
2011년 5월 28일
8.3.192.1
8.03.0192.001
Exchange Server 2007 SP3용 업데이트 롤업 3-v2
2011년 3월 30일
8.3.159.2
8.03.0159.002
Exchange Server 2007 SP3용 업데이트 롤업 2
2010년 12월 10일
8.3.137.3
8.03.0137.003
Exchange Server 2007 SP3용 업데이트 롤업 1
2010년 9월 9일
8.3.106.2
8.03.0106.002
Exchange Server 2007 SP3
2010년 6월 7일
8.3.83.6
8.03.0083.006
Exchange Server 2007 이전 릴리스의 빌드 번호
EXCHANGE SERVER 2007 이전 릴리스의 빌드 번호제품 이름릴리스 날짜빌드 번호(짧은 형식)빌드 번호(긴 형식)
Exchange Server 2007 SP2용 업데이트 롤업 5
2010년 12월 7일
8.2.305.3
8.02.0305.003
Exchange Server 2007 SP2용 업데이트 롤업 4
2010년 4월 9일
8.2.254.0
8.02.0254.000
Exchange Server 2007 SP2용 업데이트 롤업 3
2010년 3월 17일
8.2.247.2
8.02.0247.002
Exchange Server 2007 SP2용 업데이트 롤업 2
2010년 1월 22일
8.2.234.1
8.02.0234.001
Exchange Server 2007 SP2용 업데이트 롤업 1
2009년 11월 19일
8.2.217.3
8.02.0217.003
Exchange Server 2007 SP2
2009년 8월 24일
8.2.176.2
8.02.0176.002
Exchange Server 2007 SP1용 업데이트 롤업 10
2010년 4월 13일
8.1.436.0
8.01.0436.000
Exchange Server 2007 SP1용 업데이트 롤업 9
2009년 7월 16일
8.1.393.1
8.01.0393.001
Exchange Server 2007 SP1용 업데이트 롤업 8
2009년 5월 19일
8.1.375.2
8.01.0375.002
Exchange Server 2007 SP1용 업데이트 롤업 7
2009년 3월 18일
8.1.359.2
8.01.0359.002
Exchange Server 2007 SP1용 업데이트 롤업 6
2009년 2월 10일
8.1.340.1
8.01.0340.001
Exchange Server 2007 SP1용 업데이트 롤업 5
2008년 11월 20일
8.1.336.1
8.01.0336.01
Exchange Server 2007 SP1용 업데이트 롤업 4
2008년 10월 7일
8.1.311.3
8.01.0311.003
Exchange Server 2007 SP1용 업데이트 롤업 3
2008년 7월 8일
8.1.291.2
8.01.0291.002
Exchange Server 2007 SP1용 업데이트 롤업 2
2008년 5월 9일
8.1.278.2
8.01.0278.002
Exchange Server 2007 SP1용 업데이트 롤업 1
2008년 2월 28일
8.1.263.1
8.01.0263.001
Exchange Server 2007 SP1
2007년 11월 29일
8.1.240.6
8.01.0240.006
Exchange Server 2007용 업데이트 롤업 7
2008년 7월 8일
8.0.813.0
8.00.0813.000
Exchange Server 2007용 업데이트 롤업 6
2008년 2월 21일
8.0.783.2
8.00.0783.002
Exchange Server 2007용 업데이트 롤업 5
2007년 10월 25일
8.0.754.0
8.00.0754.000
Exchange Server 2007용 업데이트 롤업 4
2007년 8월 23일
8.0.744.0
8.00.0744.000
Exchange Server 2007용 업데이트 롤업 3
2007년 6월 28일
8.0.730.1
8.00.0730.001
Exchange Server 2007용 업데이트 롤업 2
2007년 5월 8일
8.0.711.2
8.00.0711.002
Exchange Server 2007용 업데이트 롤업 1
2007년 4월 17일
8.0.708.3
8.00.0708.003
Exchange Server 2007 RTM
2007년 3월 8일
8.0.685.25
8.00.0685.025
Exchange Server 2003
다음 표에는 각 Microsoft Exchange Server 2003 버전의 빌드 번호와 일반적인 릴리스 날짜가 나열되어 있습니다. Exchange Server 2003의 빌드 번호를 보려면 서버 개체의속성대화 상자를 엽니다.
EXCHANGE SERVER 2003제품 이름릴리스 날짜빌드 번호
Exchange Server 2003 SP2 이후
2008년 8월
6.5.7654.4
Exchange Server 2003 SP2 이후
2008년 3월
6.5.7653.33
Exchange Server 2003 SP2
2005년 10월 19일
6.5.7683
Exchange Server 2003 SP1
2004년 5월 25일
6.5.7226
Exchange Server 2003
2003년 9월 28일
6.5.6944
Exchange 2000 Server
다음 표에는 각 Microsoft Exchange 2000 Server 버전의 빌드 번호와 일반적인 릴리스 날짜가 나열되어 있습니다. Exchange 2000 Server의 빌드 번호를 보려면 서버 개체의속성대화 상자를 엽니다.
EXCHANGE 2000 SERVER제품 이름릴리스 날짜빌드 번호
Exchange 2000 Server SP3 이후
2008년 8월
6.0.6620.7
Exchange 2000 Server SP3 이후
2008년 3월
6.0.6620.5
Exchange 2000 Server SP3 이후
2004년 8월
6.0.6603
Exchange 2000 Server SP3 이후
2004년 4월
6.0.6556
Exchange 2000 Server SP3 이후
2003년 9월
6.0.6487
Exchange 2000 Server SP3
2002년 7월 18일
6.0.6249
Exchange 2000 Server SP2
2001년 11월 29일
6.0.5762
Exchange 2000 Server SP1
2001년 6월 21일
6.0.4712
Exchange 2000 Server
2000년 11월 29일
6.0.4417
Exchange Server 5.5
다음 표에는 각 Microsoft Exchange Server버전 5.5의 빌드 번호와 일반적인 릴리스 날짜가 나열되어 있습니다.
EXCHANGE SERVER 5.5제품 이름릴리스 날짜빌드 번호
Exchange Server 버전 5.5 SP4
2000년 11월 1일
5.5.2653
Exchange Server 버전 5.5 SP3
1999년 9월 9일
5.5.2650
Exchange Server 버전 5.5 SP2
1998년 12월 23일
5.5.2448
Exchange Server 버전 5.5 SP1
1998년 8월 5일
5.5.2232
Exchange Server 버전 5.5
1998년 2월 3일
5.5.1960
Exchange Server 5.0
EXCHANGE SERVER 5.0제품 이름릴리스 날짜빌드 번호
Exchange Server 5.0 SP2
1998년 2월 19일
5.0.1460
Exchange Server 5.0 SP1
1997년 6월 18일
5.0.1458
Exchange Server 5.0
1997년 5월 23일
5.0.1457
Exchange Server 4.0
다음 표에는 각 Microsoft Exchange Server 4.0 버전의 빌드 번호와 일반적인 릴리스 날짜가 나열되어 있습니다.
웹을 가끔 하다보면, 새로고침해도 제대로 반영되지 않는 경우 "Ctrl + F5"로 갱신하거나,
아래 코딩맛집님의 글을 보시고 해당 페이지에 코딩해주시면 됩니다.
가끔 웹 유지관리하다가 필요하여 글을 복사하여 둡니다.
PHP
<?php
//error_reporting(E_ALL ^ E_NOTICE);
// W3C P3P 규약설정
@header ("P3P : CP=\"ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC\"");
//@header("Expires: 0");
@header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
@header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
@header("Cache-Control: no-store, no-cache, must-revalidate");
@header("Cache-Control: post-check=0, pre-check=0", false);
@header("Pragma: no-cache");
//Session 설정
//@session_cache_limiter('no-cache, must-revalidate');
//@session_start();
?>
html로 브라우저 캐시를 초기화하기 : 캐시를 사용하지 않도록 하는 메타태그 no-cahe
pragma : no-cache는 캐싱을 방지하는 메타태그입니다.Expires: -1는 캐시된 페이지를 즉시 만료합니다.
<meta http-equiv="Expires" content="Mon, 06 Jan 1990 00:00:01 GMT">
# 위의 명시된 날짜 이후가 되면 페이지가 캐싱되지 않습니다.
(따라서 위와 같은 날짜로 지정할 경우 페이지는 지속적으로 캐싱되지 않습니다.)
<meta http-equiv="Expires" content="-1">
# 캐시된 페이지가 만료되어 삭제되는 시간을 정의합니다. 특별한 경우가 아니면 -1로 설정합니다.
<meta http-equiv="Pragma" content="no-cache">
# 페이지 로드시마다 페이지를 캐싱하지 않습니다. (HTTP 1.0)
<meta http-equiv="Cache-Control" content="no-cache">
# 페이지 로드시마다 페이지를 캐싱하지 않습니다. (HTTP 1.1)