4

Visual Studio를 사용하여 .NET 어셈블리에 리소스를 포함하면 어셈블리 이름 앞에 접두사가 붙습니다. 그러나 어셈블리에는 어셈블리 이름 접두사가 아닌 포함 된 리소스가있을 수 있습니다. 필자가 볼 수있는 유일한 방법은 ILDASM을 사용하여 어셈블리를 분해 한 다음 다시 어셈블하여 새로운 리소스를 추가하는 것입니다. 작동하지만, ... 실제로 그 문장을 마무리해야합니까?어셈블리 접두어없이 .NET 어셈블리에 리소스를 포함 시키시겠습니까?

(. 데스크톱 .NET 프레임 워크 3.5, 비주얼 스튜디오 2008 SP1, C#을, 윈도우 7 엔터프라이즈 64)

답변

7

실제로는 방법이 있지만 .csproj를 수동으로 편집해야합니다. 아래 그림과 같이

<EmbeddedResource Include="Resources\MyImage.png" /> 

가하는 LogicalName 자식 요소를 추가 : .csproj 파일에서

는 다음과 같이됩니다 EmbeddedResource 요소를 찾을 수 있습니다. 기본 네임 스페이스 및 폴더 이름은 생략 -

<EmbeddedResource Include="Resources\MyImage.png"> 
    <LogicalName>MyImage.png</LogicalName> 
</EmbeddedResource> 

이 변경 한 후, 자원이 "MyImage.png"로 가져올 수 있습니다.

이 기능을 사용할 수있는 것 같습니다. since 2005.

+0

Aw cool, thanks! :-) 이것은 작년에 내가 알아야 할 필요가있는 것입니다. 나중에 참조 할 수 있도록 유의하겠습니다. –

+0

대단한 트릭! Visual Studio 2010 속성 시트에는이 옵션이 포함되어 있지 않습니다. –

1

하지 어셈블리 이름 - 네임 스페이스) 기본 네임 스페이스, IIRC. 접두어가 기본 네임 스페이스 임)

+0

그래, 고마워 .... 그 경우, 그 행동을 막기 위해 (기본 네임 스페이스를 제거하는 것 이외의) 방법이 있습니까? –

+0

@ 로버트가 멈 춥니 다. 뭐하고 있니? 그냥 놔둬. 당신은 그걸로 어지럽히 게 될 것입니다. 너의 아버지가 집에 올 때까지 기다려. – Will

+2

다른 방법은 없습니다. 기본 네임 스페이스를 제거하는 것은 그리 나쁜 것이 아니며 이미 주변에 네임 스페이스가있는 기존 코드에 영향을 미치지 않습니다. 명시 적으로 이름 공간이 지정되지 않은 앱의 모든 것을 참조하는 URI를 만드는 모든 것에 영향을 미치지 만. – slugster