ASP.NET 병합 도구(Aspnet_merge.exe)
업데이트: 2007년 11월
ASP.NET 병합 도구(Aspnet_merge.exe)를 통해 ASP.NET 컴파일 도구(Aspnet_compiler.exe)로 만든 어셈블리를 결합 및 관리할 수 있습니다. ASP.NET 병합 도구는 ASP.NET 버전 2.0 이상으로 만든 어셈블리를 대상으로 사용할 수 있습니다.
ASP.NET 컴파일 도구를 사용하여 응용 프로그램을 배포용으로 미리 컴파일할 수 있습니다. 이 도구는 대상 웹 사이트의 콘텐츠 폴더마다 어셈블리 하나를 만들거나 콘텐츠 파일마다 어셈블리 하나를 만듭니다. ASP.NET 병합 도구를 사용하면 배포 및 출시를 보다 유연하게 관리할 수 있습니다. 이 도구로 다음과 같은 작업을 수행할 수 있습니다.
전체 웹 사이트에 대한 단일 어셈블리를 만듭니다.
웹 사이트 폴더마다 어셈블리를 만들고 어셈블리 이름에 접두사를 추가합니다.
페이지 및 컨트롤 등의 웹 사이트 UI(사용자 인터페이스) 요소만 포함된 단일 어셈블리를 만듭니다.
aspnet_merge [-?]
applicationPath
[-keyfile filename [-delaysign]]
[-o assemblyname | -w assemblyname | -prefix prefix]
[-copyattrs [assemblyfile]]
[-debug]
[-nologo]
[-errorstack]
[-r]
[-xmldocs]
[-a]
[-logfile logfile]
[-allowattrs textfile]
인수
인수 |
설명 |
---|---|
applicationPath |
(필수) 어셈블리를 만들 응용 프로그램이 들어 있는 폴더의 이름을 지정합니다. 이는 기본 병합 작업입니다. 컴파일러의 fixednames 옵션에 따라 생성된 개수보다 적은 어셈블리가 만들어집니다. |
옵션
옵션 |
설명 |
---|---|
-keyfile filename |
컴파일된 어셈블리에 AssemblyKeyFileAttribute 특성이 적용되도록 지정합니다. 이 특성은 강력한 이름을 생성하는 데 사용된 공개 키와 개인 키 쌍이 들어 있는 파일의 이름을 지정합니다. 입력 어셈블리가 서명되어 있는 경우 병합 도구에서 어셈블리에 서명하지 않으면 키가 제거되었다는 경고 메시지가 표시됩니다. 키 파일 이름을 지정하지 않으면 어셈블리 하나에 공개 키가 있고 다른 어셈블리에 공개 키가 없는 경우 병합 도구가 작업에 실패합니다. |
-delaysign |
생성된 어셈블리에 AssemblyDelaySignAttribute 특성이 적용되도록 지정합니다. 이 특성은 공개 키와 개인 키 쌍 대신 공개 키 토큰만 사용하여 어셈블리에 서명하도록 지정합니다. 이 옵션은 -keyfile 옵션과 함께 사용해야 합니다. 이 특성이 코드 파일의 어셈블리에 이미 적용되었으면 병합 도구에서 예외를 throw합니다. delaysign 옵션을 사용하는 경우 강력한 이름 확인을 사용하지 않으면 Merge 도구에서 생성하는 코드에 서명하기 전에 이러한 코드가 실행될 수 있습니다. 강력한 이름 확인을 사용하지 않는 경우 서명이 완료되기 전에 코드가 악의적인 공격에 노출되지 않게 해야 합니다. |
-o assemblyname |
모든 웹 UI 콘텐츠와 최상위 어셈블리를 병합한 단일 어셈블리의 이름을 지정합니다. 파일 확장명이 .compiled인 모든 파일은 단일 어셈블리를 참조하도록 수정됩니다. 확장명이 .compiled인 파일은 .aspx, .master 및 .ascx 파일 등의 콘텐츠에서 컴파일됩니다. 이 옵션은 w 또는 prefix 옵션과 함께 사용할 수 없습니다. assemblyname 매개 변수는 필수 요소입니다. |
-w assemblyname |
모든 웹 UI 콘텐츠(페이지 및 사용자 정의 컨트롤)를 병합한 단일 어셈블리의 이름을 지정합니다. 컴파일된 모든 .aspx, .master 및 .ascx 파일은 이 단일 어셈블리를 참조하도록 수정됩니다. 이를 통해 UI 요소를 코드와 별도로 업데이트할 수 있습니다. 로컬 및 전역 리소스에 대한 최상위 어셈블리는 병합되지 않습니다. 이 옵션은 o 또는 prefix 옵션과 함께 사용할 수 없습니다. assemblyname 매개 변수는 필수 요소입니다. |
-prefix prefix |
어셈블리 이름의 접두사를 지정합니다. 루트 폴더 어셈블리의 이름은 prefix 매개 변수와 정확히 같습니다. 하위 폴더 어셈블리의 이름은 prefix 매개 변수에 하위 폴더 이름을 결합한 것입니다. 예를 들어 하위 폴더의 이름이 Admin이면 결과 어셈블리의 이름이 prefix.Admin.dll이 됩니다. 업데이트할 수 없는 웹 사이트의 경우 컴파일 도구는 테마 및 로컬 리소스를 Bin 폴더에 있는 별도의 어셈블리로 컴파일합니다. 업데이트할 수 있는 웹 사이트의 경우에는 테마 및 로컬 리소스가 Bin 폴더에 있는 어셈블리로 컴파일되지 않고 응용 프로그램의 원래 폴더에 유지됩니다. 또한 업데이트 가능한 사이트의 경우 병합 도구에서 해당 파일이 있는 폴더에 대한 병합된 새 어셈블리를 가리키도록 .aspx, .master 및 .ascx 파일을 수정합니다. 이 옵션은 o 또는 w 옵션과 함께 사용할 수 없습니다. prefix 매개 변수는 필수 요소입니다. |
-copyattrs assemblyfile |
병합된 하나 이상의 어셈블리에 지정된 어셈블리와 같은 어셈블리 특성을 할당하도록 지정합니다. assemblyFile이 지정되지 않으면 App_Code.dll 최상위 어셈블리가 병합된 출력에 포함되지 않은 경우에도 App_Code 어셈블리가 사용됩니다. 병합할 어셈블리와 assemblyFile 어셈블리 간에 일치하지 않는 특성이 있으면 오류가 throw됩니다. a 옵션을 사용하여 특성 불일치 검사를 수행하지 않거나, allowattrs 옵션을 사용하여 특성을 검사에서 제외할 수 있습니다. 일관성 검사에 포함되지 않는 특성은 이 표에서 다른 위치에 있는 allowattrs 옵션에 대한 설명을 참조하십시오. |
-debug |
병합된 어셈블리에서 디버그 출력이 보존되도록 지정합니다. |
-nologo |
저작권 메시지를 표시하지 않습니다. |
-errorstack |
이 도구에서 응용 프로그램 컴파일에 실패할 경우 스택 추적 정보가 포함되도록 지정합니다. |
-r |
주 코드 어셈블리(App_Code 폴더의 코드)에 대한 .compiled 파일을 제거합니다. 응용 프로그램에 주 코드 어셈블리에 대한 명시적 형식 참조가 들어 있는 경우에는 이 옵션을 사용하지 마십시오. |
-xmldocs |
입력 어셈블리에 연결된 XML 문서 파일을 병합합니다. XML 파일은 병합된 사이트의 Bin 폴더에 포함됩니다. |
-a |
어셈블리 중 일부에 AllowPartiallyTrustedCallersAttribute가 적용되지 않았거나 일치하지 않는 특성이 있는 경우에도 병합 도구에서 어셈블리를 병합하도록 지정합니다. AllowPartiallyTrustedCallersAttribute를 사용하면 부분 신뢰 호출자가 어셈블리에 액세스할 수 있으며, 이 특성은 컴파일 도구에서 컴파일 시 지정됩니다. 중요 a 옵션을 사용하면 이전에는 부분 신뢰 호출자를 허용하는 것으로 표시되지 않았던 병합된 어셈블리가 AllowPartiallyTrustedCallersAttribute로 표시됩니다. 따라서 부분 신뢰 코드에서 해당 어셈블리를 호출할 수 있게 됩니다. |
-log logfile |
지정된 파일에 메시지를 씁니다. |
-allowattrs textfile |
도구에서 병합된 어셈블리의 특성 일관성을 확인할 때 제외할 특성이 들어 있는 파일을 지정합니다. 파일의 각 줄은 특성의 정규화된 이름 또는 정규화된 네임스페이스가 될 수 있습니다. 네임스페이스를 지정하면 해당 네임스페이스에 있는 모든 특성이 제외됩니다. 각 특성 또는 네임스페이스를 별도의 줄에 지정해야 합니다. 일부 특성은 명시적으로 지정할 필요가 없습니다. 다음과 같은 특성이 나오면 병합 도구에서 경고를 출력한 후 처리를 진행합니다. |
-? |
이 도구의 명령 구문 및 옵션을 표시합니다. |
설명
ASP.NET 웹 응용 프로그램을 원위치에서 컴파일할 수도 있고, 배포를 위해 프로덕션 서버와 같은 대상 위치로 미리 컴파일할 수도 있습니다. 응용 프로그램을 원위치에서 컴파일하는 것을 동적 컴파일이라고 하며, 이 방법은 신속한 개발 시나리오에 유용합니다. 배포를 위해 응용 프로그램을 미리 컴파일할 때는 다음과 같은 두 가지 방법 중 하나를 사용할 수 있습니다.
코드 숨김 및 태그 파일 등의 모든 소스 파일을 컴파일하고 제거합니다.
태그 파일을 업데이트할 수 있도록 컴파일 후 보존합니다.
ASP.NET 병합 도구를 통해 웹 사이트를 미리 컴파일하면 ASP.NET 컴파일 도구만 사용할 때보다 유연한 작업이 가능합니다.
ASP.NET 병합 도구는 ASP.NET 컴파일 도구의 출력을 병합하여 어셈블리를 생성합니다. 이러한 병합된 어셈블리를 통해 대규모 웹 사이트의 릴리스 관리 및 배포를 개선할 수 있습니다. ASP.NET 병합 도구를 다음과 같은 세 가지 방법으로 사용할 수 있습니다.
모든 출력을 단일 어셈블리로 병합합니다.
각 폴더의 웹 UI 콘텐츠(웹 페이지, 스킨 등)를 자체 어셈블리로 병합합니다.
사이트의 모든 웹 UI 콘텐츠를 단일 어셈블리로 병합합니다.
다음 단원에서는 이러한 시나리오에 대해 설명합니다. ASP.NET 병합 도구를 사용하는 예제는 MSDN 웹 사이트에서 Managing ASP.NET Precompiled Output for Deployment Using the aspnet_merge.exe Command를 참조하십시오.
ASP.NET 병합 도구는 빌드 구성을 관리하고 빌드 전 및 빌드 후 작업을 지정하고 어셈블리를 병합하는 Visual Studio용 추가 기능인 Visual Studio Web Deployment Projects에 포함되어 있습니다. 자세한 내용은 Using Web Deployment Projects with Visual Studio 2005를 참조하십시오.
어셈블리 그룹
컴파일 도구는 소스 파일과 폴더의 형식에 따라 서로 다른 어셈블리를 만듭니다. 컴파일 도구의 출력을 두 가지 어셈블리 그룹으로 분류할 수 있습니다. 병합 도구에서는 두 어셈블리 그룹을 서로 다른 방식으로 병합합니다.
두 어셈블리 그룹은 다음과 같습니다.
.aspx, .ascx, .master, .ashx, .skin 파일 및 App_LocalResources 폴더의 로컬 .resx 파일과 같은 웹 UI 콘텐츠 파일에서 생성한 웹 UI 콘텐츠 어셈블리. 이러한 어셈블리가 병합되는 방식은 미리 컴파일된 사이트가 업데이트 가능한지 여부에 따라 다릅니다. 이는 컴파일 도구의 u 옵션에 따라 결정됩니다. 컴파일된 사이트가 업데이트 가능하면 사이트를 다시 컴파일하지 않고도 UI 콘텐츠를 업데이트할 수 있습니다. 웹 사이트가 업데이트 가능하면 콘텐츠 파일은 원래 폴더에 그대로 유지되고 관련된 코드 파일만 병합됩니다. 사이트를 업데이트할 수 없으면 .ascx, .master 및 .skin 콘텐츠 파일이 원래 폴더에서 제거됩니다. ASP.NET .aspx 파일은 콘텐츠가 없는 마커 파일로 대체됩니다. 이 경우에는 UI 콘텐츠와 코드가 병합됩니다.
App_Code, App_GlobalResources, App_WebReferences 등의 응용 프로그램 폴더에서 생성한 어셈블리인 최상위 어셈블리. 최상위 어셈블리는 Global.asax 등의 특수 파일에 대해서도 생성됩니다. 최상위 어셈블리는 항상 배포 사이트의 Bin 폴더에 컴파일됩니다. 최종 배포 사이트에는 App_Code, App_GlobalResources, App_WebReferences 폴더 또는 Global.asax 파일이 없습니다. 대신 병합 도구에 사용한 옵션에 따라 Bin 디렉터리에 하나 이상의 어셈블리가 있습니다. 사용자 정의 폴더도 항상 컴파일되지만, UI 콘텐츠 파일이 들어 있는 경우에는 예외적으로 최종 배포 사이트에서 사용자 정의 폴더가 보존됩니다. 예약된 폴더에 대한 자세한 내용은 ASP.NET 웹 사이트 레이아웃을 참조하십시오.
파일 확장명이 .css, .gif, .htm, .html, .jpg, .js 등인 정적 콘텐츠는 미리 컴파일된 디렉터리 구조에서 해당 위치에 유지됩니다. 병합 도구에서는 이러한 파일을 이동하거나 수정하지 않습니다.
컴파일 및 병합 시나리오
ASP.NET 2.0에서는 동적 컴파일, 컴파일 도구를 통한 미리 컴파일 및 병합 도구를 통한 병합을 배포 및 릴리스 관리 목표에 맞게 적절히 조합하여 사용할 수 있습니다. 다음 표에서는 다양한 컴파일 및 병합 시나리오와 병합 도구를 사용할 시점을 보여 줍니다.
시나리오 |
설명 |
---|---|
동적 컴파일(미리 컴파일 안 함) |
동적 컴파일은 신속한 개발 시나리오에서 유용합니다. Visual Studio에서는 동적 컴파일이 사용됩니다. F5 키 또는 Ctrl+F5를 누르면 작업 중인 페이지와 이 페이지에 종속된 페이지만 동적으로 컴파일됩니다. 따라서 전체 웹 사이트가 컴파일되지는 않습니다. 자세한 내용은 ASP.NET 동적 컴파일 이해를 참조하십시오. |
각 웹 UI 콘텐츠 파일에 대한 단일 어셈블리를 만들기 위해 fixednames 옵션과 함께 Aspnet_compiler.exe를 사용하여 미리 컴파일 |
fixednames 옵션을 사용하여 미리 컴파일하면 개별 페이지라는 작은 단위로 증분 업데이트를 만들어 변경된 페이지만 다시 배포할 수 있습니다. fixednames 옵션과 함께 u 옵션을 사용하면 업데이트가 가능하거나 가능하지 않은 미리 컴파일된 사이트를 만들 수 있습니다. fixednames 옵션은 이후에 병합 도구를 사용하여 어셈블리를 병합하는 방법에 영향을 주지 않습니다. 대규모 사이트의 경우 fixednames 옵션을 통해 만드는 어셈블리가 너무 많으면 릴리스 관리 또는 배포가 어려워질 수 있습니다. 자세한 내용은 ASP.NET 컴파일 도구(Aspnet_compiler.exe)를 참조하십시오. |
각 웹 UI 콘텐츠 폴더에 대한 어셈블리를 만들기 위해 prefix 옵션과 함께 Aspnet_merge.exe를 사용하여 병합 |
이 시나리오에서는 UI 콘텐츠 폴더 수준으로 어셈블리를 제어할 수 있습니다. 이 시나리오는 컴파일 도구를 사용하면서 fixenames 옵션을 생략하는 것과 비슷합니다. 그러나 병합 도구를 사용하면 루트 폴더 및 사용자 정의 콘텐츠 폴더에서 파생되는 최종 어셈블리의 이름을 보다 자세히 제어할 수 있다는 점이 다릅니다. 최상위 어셈블리 및 정적 콘텐츠는 영향을 받지 않습니다. 이 시나리오에는 폴더에 있는 파일이 변경될 때 폴더 어셈블리와 수정된 페이지를 다시 배포해야 한다는 단점이 있습니다. prefix 옵션을 사용하면 업데이트가 가능하거나 가능하지 않은 미리 컴파일된 사이트를 병합할 수 있습니다. 이 시나리오는 병합 도구를 옵션 없이 실행할 때 적용되는 기본 시나리오입니다. |
모든 웹 UI 콘텐츠 폴더에 대한 단일 어셈블리를 만들기 위해 w 옵션과 함께 Aspnet_merge.exe를 사용하여 병합 |
이 시나리오에서는 모든 UI 콘텐츠가 assemblyname 매개 변수에 지정된 이름의 단일 어셈블리로 병합됩니다. 따라서 배포된 최종 사이트에서 어셈블리의 총 개수가 줄어듭니다. 그러나 콘텐츠 파일이 하나라도 변경되면 UI 콘텐츠 어셈블리를 다시 배포해야 합니다. 최상위 어셈블리 및 정적 콘텐츠는 영향을 받지 않습니다. |
전체 웹 사이트에 대한 단일 어셈블리를 만들기 위해 o 옵션과 함께 Aspnet_merge.exe를 사용하여 병합 |
이 시나리오에서는 배포된 최종 사이트에 assemblyname 매개 변수에 지정된 이름의 단일 어셈블리만 있습니다. 어셈블리가 하나뿐이므로 사이트를 손쉽게 배포할 수 있습니다. 그러나 사이트의 콘텐츠가 하나라도 변경되면 사이트 어셈블리를 다시 만들어 다시 배포해야 합니다. App_Code, App_GlobalResources 및 App_WebReferences 등의 최상위 어셈블리도 단일 어셈블리에 포함되므로 영향을 받습니다. 정적 콘텐츠는 영향을 받지 않습니다. |
배포용으로 응용 프로그램 병합
병합 도구를 실행하여 웹 사이트에 대한 어셈블리를 병합하고 applicationPath 매개 변수를 사용하여 미리 컴파일된 사이트의 위치를 지정합니다. ASP.NET 병합 도구에서는 미리 컴파일된 사이트를 원위치에서 병합합니다. 즉, 미리 컴파일된 사이트의 병합된 복사본을 새로 만들지 않습니다. applicationPath 매개 변수는 웹 응용 프로그램의 최종 위치가 될 수 있습니다. 또는 디렉터리를 복사하는 등의 방법으로 미리 컴파일된 응용 프로그램을 추가로 배포할 수 있습니다.
병합 도구에서 미리 컴파일된 사이트를 병합할 때 동적 파일의 위치는 미리 컴파일된 단계에서 나타나는 대로 보존됩니다. 병합 도구는 동적 파일의 콘텐츠에서 @ Page, @ Control 및 @ Master 지시문만 변경합니다. 이러한 지시문이 있는 파일은 Bin 폴더에 있는 올바른 병합된 어셈블리에서 상속됩니다. 컴파일 도구에서 파일 형식을 처리하는 방법에 대한 자세한 내용은 ASP.NET 컴파일 도구(Aspnet_compiler.exe)의 "설명" 부분을 참조하십시오.
특정 병합 옵션을 사용하면 루트 사이트 폴더를 비롯한 사용자 정의 폴더에서 파생된 어셈블리가 미리 컴파일된 사이트에서 나타나는 것과 다른 이름으로 만들어질 수 있습니다. 예를 들어 다음 표에서는 병합 도구에 옵션을 사용하지 않을 때 병합되는 어셈블리의 이름을 보여 줍니다. 각 사용자 정의 폴더의 어셈블리 이름은 App_Web_nnnn.dll이며, 여기에서 nnnn은 내부적으로 생성되는 해시 값입니다.
미리 컴파일된 사이트의 폴더 |
Aspnet_merge.exe 옵션을 사용하지 않을 때 병합되는 어셈블리의 이름 |
---|---|
\ |
Root.dll |
Admin |
Admin.dll |
다음 표에서는 prefix 옵션 및 NewName 매개 변수를 사용할 때 병합되는 어셈블리의 이름을 보여 줍니다.
미리 컴파일된 사이트의 폴더 |
prefix Aspnet_merge.exe 옵션을 사용할 때 병합되는 어셈블리의 이름 |
---|---|
\ |
NewName.dll |
Admin |
NewName.Admin.dll |
업데이트할 수 없는 병합된 사이트에서는 테마가 다르게 처리됩니다. 병합되지 않은 미리 컴파일된 사이트에는 각 테마에 대한 별도의 어셈블리가 있습니다. 각 어셈블리의 이름은 App_Theme_ThemeName.dll입니다. 병합된 사이트에는 Theme.dll이라는 단일 어셈블리가 있습니다. 미리 컴파일된 사이트가 업데이트 가능한 경우에는 병합된 Bin 폴더에 테마 기반 어셈블리가 없습니다.
병합 프로세스 문제 해결
웹 사이트를 컴파일하거나 병합할 때 어셈블리의 경로 길이가 Microsoft Windows에서 허용되는 파일 경로의 최대 길이를 넘을 수 있습니다. 이러한 경우 병합된 어셈블리에 있는 리소스를 요청하면 리소스가 미리 컴파일되지 않아 요청할 수 없다는 HttpException 오류가 throw됩니다.
Microsoft Windows의 최대 파일 경로 길이는 260자입니다. 어셈블리의 경로 길이가 이 제한을 넘는 경우 웹 사이트 또는 해당 하위 폴더의 경로 길이를 줄여야 합니다. Web.config 파일에서 hostingEnvironment 요소의 ShadowCopyBinAssemblies 속성을 사용하여 섀도 복사를 해제해야 할 수도 있습니다. 파일 이름에 대한 자세한 내용은 MSDN 웹 사이트에서 Naming a File을 참조하십시오.
o 옵션과 함께 병합 도구를 사용하여 사이트에 대한 단일 어셈블리를 만들 때 병합 프로세스에서 순환 참조가 만들어지면 오류가 발생합니다. 다음과 같은 두 가지 방법으로 이 문제를 해결할 수 있습니다.
순환 참조가 들어 있는 소스 파일에 외부 참조가 유지되고 이러한 파일이 병합되지 않도록 w 옵션을 대신 사용합니다.
순환 참조와 관련된 여러 컨트롤을 서로 다른 디렉터리에 분산시킵니다.
특성이 일치하지 않는 어셈블리를 병합할 때는 병합 작업에 성공할 수 있도록 다음과 같은 지침을 따라야 합니다.
allowattrs 옵션을 사용하여 일치하지 않는 특성을 나열합니다.
copyattrs 옵션을 사용하여 병합할 모든 어셈블리에서 특성을 일치시킵니다.
a 옵션을 사용합니다.
어셈블리 서명
delaysign 및 keyfile 옵션과 함께 병합 도구를 사용하면 강력한 이름 도구(Sn.exe)를 사용하지 않고도 강력한 이름의 어셈블리를 만들 수 있습니다. delaysign 옵션은 AssemblyDelaySignAttribute 특성에, keyfile 옵션은 AssemblyKeyFileAttribute 특성에 해당합니다.
각 옵션은 병합된 어셈블리의 해당 특성에 적용됩니다. 적용되는 특성은 해당 AllowMultiple 속성이 false로 설정된 AttributeUsageAttribute로 표시됩니다. 따라서 이러한 옵션을 사용하면서 이러한 특성 중 하나가 이미 표시된 어셈블리를 병합하면 작업에 실패합니다.
예제
다음 명령은 미리 컴파일된 사이트의 어셈블리를 C:\PrecompiledSite 디렉터리에 병합합니다.
Aspnet_merge C:\PrecompiledSite
다음 명령은 미리 컴파일된 사이트의 어셈블리를 C:\PrecompiledSite 디렉터리에 병합하고 KeyFile.snk 파일을 사용하여 병합된 어셈블리에 서명합니다. 병합된 사이트에는 미리 컴파일된 사이트 폴더마다 어셈블리 하나가 있습니다.
Aspnet_merge C:\PrecompiledSite -keyfile KeyFile.snk
다음 명령은 미리 컴파일된 사이트의 모든 어셈블리를 C:\PrecompiledSite 디렉터리에 단일 어셈블리로 병합하고 결과 어셈블리의 이름을 MyApp.dll로 지정합니다. 병합된 사이트에는 모든 웹 사이트 UI 콘텐츠에 대한 단일 어셈블리가 있습니다.
Aspnet_merge C:\PrecompiledSite -w MyApp.dll
다음 명령은 미리 컴파일된 사이트의 모든 어셈블리를 C:\PrecompiledSite 디렉터리에 단일 어셈블리로 병합하고 결과 어셈블리의 이름을 MyApp.dll로 지정합니다.
Aspnet_merge C:\PrecompiledSite -o MyApp.dll