2014-11-21 3 views
0

안녕하세요 사용자 지정 C++ 빌드 도구 모음의 코드를 제공하는 관리되는 패키지가 있습니다. 나는 몇 가지 사용자 지정 속성로드하는 사용자 정의 플랫폼 Toolset.targets 있습니다Visual Studio 2013에서 IDynamicEnumValuesProvider를로드하지 않는 DynamicEnumProperty 공급자 클래스

<ItemGroup> 
    <PropertyPageSchema Include="$(MSBuildThisFileDirectory)projprops.xml" /> 
</ItemGroup> 

projprops.xml의 모습을 다음

<?xml version="1.0" encoding="utf-8"?> 
<Rule Name="MyGeneralProperties" 
    Order="9" 
    DisplayName="MyRule" 
    Description="General" 
    PageTemplate="generic" 
    xmlns="http://schemas.microsoft.com/build/2009/properties"> 
    <Rule.Categories> 
     <Category Name="General" DisplayName="General" Description="General" /> 
    </Rule.Categories> 
    <Rule.DataSource> 
     <DataSource Persistence="UserFile"/> 
    </Rule.DataSource> 

    <DynamicEnumProperty Name="BuildMachine" DisplayName="Build Machine" Category="General" EnumProvider="BuildMachines" Visible="True" Description="The machine that building and debugging will take place on."/> 
</Rule> 

I 패키지과 같은 DLL 내 열거 공급자가 다음과 같습니다

[Export(typeof(IDynamicEnumValuesProvider))] 
[DynamicEnumCategory("BuildMachines")] 
public class BuildMachineEnumProvider : IDynamicEnumValuesProvider 
{ 
    // the implementation 
} 
BuildMachineEnumProvider의 인스턴스가 런타임에 의해 생성되지 않습니다

그러나 속성이이 t을 해야하는 오른쪽 VC 프로젝트 속성에 표시 영형. [ProvideAutoLoad(UIContextGuids80.SolutionExists)]을 통해 솔루션을로드 할 때 패키지를로드해야합니다. 내가 읽은 모든 것에 따르면 MEF는 패키지가로드 될 때 enum 공급자 클래스를 인식하고 나머지는 모두 작동해야합니다. 그렇지 않은 경우는 예외입니다.

답변