csproj 어셈블리 참조 이해
VS2010을 사용하고 있으며 파일 참조를 통해 로컬 하드 디스크의 몇 가지 어셈블리를 내 C # 프로젝트에 추가하려고했습니다. csproj
파일을 들여다 보니 가끔 파일 참조가 다음과 같이 나타납니다.
<Reference Include="name">
그러나 때로는 다음과 같이 나타납니다.
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
차이의 원인은 무엇입니까?
k3b의 답변에 영감을 받아 다른 테스트를 수행했습니다. 새로운 클래스 라이브러리 프로젝트를 만들었습니다.
파일 참조를 추가하십시오. 속성 창 에서 특정 버전 의 초기 값 은 False 입니다. 같은 파일보기
csproj
<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
속성 창 에서 특정 버전 을 True로 변경합니다 . VS는 속성에 버전을 추가 합니다.
Include
<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
속성 창 에서 특정 버전 을 다시 False로 변경 합니다. VS는 자식 요소를 추가합니다 .
SpecificVersion
<Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
따라서 규칙은 다음과 같습니다.
- 시 버전 에 존재 포함 속성을 더이없는
SpecificVersion
자식 요소는 파일이 어셈블리를 특정 버전으로 구성되어 있습니다 SpecificVersion
자식 요소 만 값으로 추가됩니다 거짓 .
내가 아직도 이해하지 못하는 한 가지는 :
- 새 테스트 프로젝트의 경우 파일 참조를 제거하고 다시 추가하면 기본값 인 포인트 1의 형식으로 돌아갑니다.
- 기존 프로젝트의 경우 파일 참조를 제거하고 다시 추가하면 포인트 3의 형식으로 돌아갑니다. 또한 특정 버전이 사용되지 않음을 의미하지만 포인트 1의 형식으로 돌아 가지 않는 이유가 궁금합니다. .
얻는 참조 유형은 어셈블리를 링크하는 방법에 따라 다릅니다.
- 프로젝트 탐색기에서 참조 된 어셈블리 선택
- 속성 페이지로 이동
거기에 부울 플래그 "특정 버전"이 있습니다.
- true는 어셈블리에 version = xxx가 있어야 함을 의미합니다.
- false는 어셈블리 버전 무시를 의미합니다.
(저는 german-vs2010 만 가지고 있으므로 독일어 "Spezifische Version"의 영어 번역은 약간 다를 수 있습니다.)
[최신 정보]
vcs2010-express 독일어를 사용하여 다음을 시도했습니다.
기본 SpecificVersion = False로 참조 추가 : 버전 없음
<Reference Include="Castle.Core">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
수정 된 참조 : SpecificVersion = True : 추가 된 버전
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
</Reference>
다시 수정 된 참조 : SpecificVersion = False : 버전이 남아 있고 새 요소 SpecificVersion
<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL">
<HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath>
<SpecificVersion>False</SpecificVersion>
</Reference>
특정 버전은 기억되지만 무시되는 것 같습니다. <SpecificVersion>False</SpecificVersion>
참고 URL : https://stackoverflow.com/questions/16578819/understanding-a-csproj-assembly-reference
'IT TIP' 카테고리의 다른 글
Stack Overflow와 같은 사이트에서 검색을 구현하기 위해 Lucene.NET을 어떻게 사용합니까? (0) | 2020.11.28 |
---|---|
스마트 포인터와 함께 공변 반환 유형을 어떻게 사용할 수 있습니까? (0) | 2020.11.28 |
스레드와 프로세스에 대해 이야기 할 때 "동시에 플로피를 포맷하지 마십시오"라는 주석이 왜 재미 있었습니까? (0) | 2020.11.28 |
MVC 모델 개체, 도메인 개체 및 DTO의 차이점은 무엇입니까? (0) | 2020.11.28 |
Python 세트에서 세트 제거 (0) | 2020.11.28 |