您好,我有一個託管包,它提供了自定義C++構建工具鏈的代碼。我有一個加載一些自定義屬性的自定義平臺Toolset.targets:實現IDynamicEnumValuesProvider的DynamicEnumProperty提供程序類不會被Visual Studio 2013加載
<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>
我在同一個DLL作爲包和它在我枚舉提供商看起來是這樣的:
[Export(typeof(IDynamicEnumValuesProvider))]
[DynamicEnumCategory("BuildMachines")]
public class BuildMachineEnumProvider : IDynamicEnumValuesProvider
{
// the implementation
}
的BuildMachineEnumProvider
實例永遠不會被運行時創建然而屬性的VC項目屬性身在何方,它應該牛逼顯示出來O操作。當通過[ProvideAutoLoad(UIContextGuids80.SolutionExists)]
加載解決方案時,應用程序會按照應該加載的方式加載。根據我讀過的所有內容,當包裝被加載時,MEF應該識別我的枚舉提供程序類,並且其他所有應用程序都可以正常工作 - 但事實並非如此。
工作正常!我的軟件包默認是在vsixmanifest中設置爲Microsoft.VisualStudio.VsPackage,將它切換到Microsoft.VisualStudio.MefComponent解決了這個問題。謝謝! – Corillian 2015-03-30 13:32:26