안녕하세요 사용자 지정 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 공급자 클래스를 인식하고 나머지는 모두 작동해야합니다. 그렇지 않은 경우는 예외입니다.
내 패키지는 기본적으로 vsixmanifest에서 Microsoft.VisualStudio.VsPackage로 설정되어 Microsoft.VisualStudio.MefComponent로 전환하면 문제가 해결되었습니다. 감사! – Corillian