http://msdn.microsoft.com/ko-kr/library/ak58kz04.aspx
[클릭원스 배포시 프로젝트(dll)을 필요 시 다운로드 하는 방법]
모듈A
부모프로젝트
[작성방법]
1.우선 모듈A를 참조한다
2.그리고 배포시 부모프로젝트에서 모듈A를 빼고 배포한다 (제외(?))시키는 방법은 아래 참고
모듈A를 include하고 다운로드 그룹 이름을 지정한다
추후에 다운 받을 때 다운로드 그룹 이름을 이용해서 다운받는다
[부모프로젝트에서 모듈A를 요청할때 ]
Dictionary<String, String> DllMapping = new Dictionary<String, String>();
private int childFormNumber = 0;
public MDIParent1()
{
InitializeComponent();
DllMapping["ClickOnceLibrary"] = "ClickOnceLibrary";
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
//클릭이벤트 여기서 호출
private void toolStripButton4_Click(object sender, EventArgs e)
{
try
{
Insa_module.TestClass dc = new Insa_module.TestClass();
Insa_module.Insa2 insa = new Insa_module.Insa2();
insa.Show();
MessageBox.Show("Message: " + dc.Message);
}
catch (Exception ex) {
MessageBox.Show(ex.Message);
}
}
/*
* Use ClickOnce APIs to download the assembly on demand.
*/
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");
}
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);
}
}
'C#.NET' 카테고리의 다른 글
Windows Server 2008용 Windows Media 서비스 2008 (0) | 2009.12.01 |
---|---|
Ajax Toolkit 을 이용한 실시간 (페이지 전환없이) 파일업로드 구현하기 (2) | 2009.12.01 |
WCF 웹서비스를 이용한 데이터 바인딩 (0) | 2009.12.01 |
(웹서비스 최소용량 해결방법)할당량을 늘리려면 적합한 바인딩 요소에서 MaxReceivedMessageSize 속성을 사용하십시오 (0) | 2009.12.01 |
System.Data.SqlServerCe 오류해결방법 (0) | 2009.12.01 |
clientaccesspolicy.xml 파일을 사용하여 도메인 간 액세스를 허용하려면 (0) | 2009.11.30 |
실버라이트 웹서버에서 작동안될때(MIME 형식 설정) (0) | 2009.11.30 |
DIV 태그로 전체화면 채우기 (0) | 2009.11.30 |
실버라이트3 외부실행 만들기 (0) | 2009.11.30 |
클래스 라이브러리에서 web.config 접속정보 읽어오기 (0) | 2009.11.30 |