2012-08-16 5 views
2

상식에 XML 플래그 :된 CodeDom - 난 내 테스트 솔루션의 .csproj을 검토하면 다음과 같이 내가 깃발을 볼

<ItemGroup> 
<Reference Include="Interop.Encore"> 
<HintPath>..\..\..\..\..\..\\Interop.Encore.dll</HintPath> 
**<EmbedInteropTypes>False</EmbedInteropTypes>** 
</Reference> 
<Reference Include="System" /> 
<Reference Include="System.Core" /> 
<Reference Include="System.Xml.Linq" /> 
<Reference Include="System.Data.DataSetExtensions" /> 
<Reference Include="Microsoft.CSharp" /> 
<Reference Include="System.Data" /> 
<Reference Include="System.Xml" /> 
</ItemGroup> 

내 질문의시는 i가 된 CodeDom 프로젝트에서 false로 EmbedInteropTypes를 설정해야 그것이 자신의 .DLL을 생성하기 전에. (dll이 아닌 EmbedInteropType DLL을 보유하고있는 DLL)

누구나 해결책이 있습니까?

나는

_CurrentCodeFile.AssemblyCustomAttributes.Add(
    new CodeAttributeDeclaration("EmbedInteropTypes", new CodeAttributeArgument[] { new 
     CodeAttributeArgument(
     new CodePrimitiveExpression(false))})); 

어떤 제안을 찾고 있어요?

답변

0

먼저 어셈블리 특성이 무엇인지 오해 한 것 같습니다. 그들은 일반적으로 AssemblyInfo.cs에 위치하고 있으며 [assembly:AssemblyCultureAttribute("de")]처럼 보입니다. 그리고 내가 찾을 수있는 EmbedInteropTypes 속성이 없습니다.

이제 CodeDOM을 사용하여 COM 어셈블리를 참조하여 테스트 한 결과를 바탕으로 interop 어셈블리를 포함하지 않으려면 특별한 작업을 수행 할 필요가 없습니다.

반면에 퍼가기를 원하면 the /link command line option을 명시 적으로 사용하고 CompilerOptions으로 설정해야합니다.

+0

두 번째로/link 명령을 사용하면 afaik를 연결하는 방법으로 해제하거나 제공하지 않을 플래그를 제공하지 않습니다. 나는 틀릴 수 있습니다. 우리는 언젠가 태국의 메신저를 다시 마실 수 있습니다. – Chris

+0

당신이 무슨 말을하고 있는지 확실하지 않지만, 태국에 8000km를 가지 않기로했습니다. 너 :-) – svick