여러.NET 프로그램 집합 을 어떻게 통합 합 니까?
또 다른 유명한 방안 은 DLL 을 자원 으로 삽입 하 는 것 이다.(관심 이 있다 면 이 방안 을 묘사 한 멋 진 글 이 있다.삽 입 된 자원 에서 DLL 불 러 오기[^].
어떤 경우,나 는 이러한 방법 을 사용 할 필요 가 있다 는 것 을 깨 달 았 다.만약 우리 가 이러한 어 셈 블 리 소스 코드 가 있다 면,우 리 는 컴 파일 할 때 모든 소스 코드 파일 을 하나의 항목 으로 가 져 와 서 이 물건 들 의 완벽 한 조합 을 얻 을 수 있 을 것 이다.
여기 서 나 는 이 일 을 어떻게 하 는 지 에 대해 간략하게 설명 하려 고 시도 할 것 이다.
프 리 젠 테 이 션 을 위해 콘 솔 프로그램(이것 은 우리 의 메 인 프로그램)이 있다 고 가정 하고 두 개의 라 이브 러 리(우리 의 2 급 프로그램)를 사용 했다.우 리 는 그것들 을 하나의 파일 로 조합 하고 싶다.
우 리 는 구상 에 따라 이 해결 방안 을 구축 하여 이 세 가지 프로그램 을 얻 었 다.
MyExecutable 프로젝트 파일(MyExecutable.csproj)은 XML 기반 파일 입 니 다.내용 을 보면 ItemGroup 노드 를 발견 할 수 있 습 니 다.이 노드 보 아 함 은 구축 과정 에서 입력 한 하위 요 소 를 정의 합 니 다.이 하위 요 소 는 번역 되 어야 할 프로그램의 자원 파일 이나 복사 되 어야 할 자원 을 참조 할 수 있 습 니 다.그리고 구축 처리 에 포 함 된 프로그램 집합(관심 이 있다 면MSDN MSBuild에서 Visual Studio 프로젝트 파일 에 대한 정 보 를 더 알 수 있 습 니 다).
이제 ItemGroup 노드 를 찾 습 니 다.포함 할 프로그램 집합 을 참조 하 였 습 니 다.
<ItemGroup>
<ProjectReference Include="..\MyLibrary1\MyLibrary1.csproj">
<Project>{ea53ca82-13d7-4be1-b95a-4d9d7853d46e}</Project>
<Name>MyLibrary1</Name>
</ProjectReference>
<ProjectReference Include="..\MyLibrary2\MyLibrary2.csproj">
<Project>{c31d21f3-e86a-4581-b4e8-acae6644d19e}</Project>
<Name>MyLibrary2</Name>
</ProjectReference>
</ItemGroup>
Debug 모드 에서 MyExecutable 을 구축 할 때 MSBuild 에 가서 이 항목 을 참조 하 라 는 조건 을 추가 합 니 다.
<ItemGroupCondition="'$(Configuration)'=='Debug'">
발표(Release)모드 에 대해 서 는 MyLibrary 1 과 MyLibrary 2 에서 온 모든 소스 코드 파일 을 포함 합 니 다.컴 파일 도 진행 합 니 다.우 리 는 하나의 어댑터("\*\*.cs")를 이용 하여 디 렉 터 리 와 하위 디 렉 터 리 를 모든 CS 파일 에 포함 시 킬 것 입 니 다.어댑터 도 우리 가 원 하지 않 는 자원 코드 파일 을 포함 시 킬 것 입 니 다(obj 폴 더 의 Temporary Generated File [guid].cs 및 Property 폴 더 의 Assembly Info.cs 파일 이 이러한 경우 입 니 다)따라서 우 리 는 그것들 을 제외 할 것 입 니 다.
<ItemGroup Condition=" '$(Configuration)' == 'Release' ">
<Compile Include="..\MyLibrary1\**\*.cs"
Exclude="..\MyLibrary1\Properties\AssemblyInfo.cs;
..\MyLibrary1\obj\**;
..\MyLibrary1\bin\**">
<Link>MyLibrary1\%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Compile>
<Compile Include="..\MyLibrary2\**\*.cs"
Exclude="..\MyLibrary2\Properties\AssemblyInfo.cs;
..\MyLibrary2\obj\**;
..\MyLibrary2\bin\**">
<Link>MyLibrary2\%(RecursiveDir)%(Filename)%(Extension)</Link>
<Visible>false</Visible>
</Compile>
</ItemGroup>
이렇게 하면 됩 니 다.MyExecutable.csproj 의 수정 사항 을 저장 하고 발표 모드 에서 해결 방안 을 재 구축 합 니 다.내 가 강조 하고 자 하 는 마지막 일 은 우리 가 형식적 으로 모든 프로그램 소스 파일 의 컴 파일 을 한 항목 으로 옮 기 는 것 이기 때문에 프로젝트 는 그 파일 들 을 컴 파일 할 수 있어 야 하기 때 문 입 니 다.따라서 다음 과 같은 것들 을 고려 해 야 합 니 다.
성공 적 으로 구축 하기 위해 서 는 메 인 프로그램 에 2 급 프로그램의 모든 인용,자원,설정 등 이 필요 합 니 다.
모든 프로그램 집합 은 같은.NET 언어 로 작성 해 야 합 니 다.
이상 은 본문 에서 말 한 모든 내용 이 니 여러분 들 이 좋아 하 시 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
.NET(C#)에서 데이터 암호화(주로 AES)를 이용할 때의 메모.NET을 사용한 암호화 구현에 대해 걱정할 수 있었기 때문에 메모. 요컨대, AesCryptoServiceProvider 이나 AesManaged 라든지는 보통은 사용하지 않고 좋고, Aes 를 사용하면 좋다, 라...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.