我已经为此困扰了一段时间,不知道还有什么可以尝试的。
因此,基本上我们已经创建了一个 SDK 和一个安装程序,为 Visual Studio 创建了一个项目模板,以便于创建产品。此项目模板包含两种自定义项目类型,即 .xxProj 和 .yyProj,它们都与 SDK 附带的特定编译器和目标文件相关联。
该项目在安装并正常工作时在 Visual Studio 中显示良好,但是由于某种原因,属性窗口/页面不包含任何内容,即使我相信我已经为两者正确实现了单独的属性页面。
在 ProjectPackage 中,我提供了以下对象和属性标签:
[ProvideObject(typeof(xxPropertyPage))]
[ProvideObject(typeof(yyPropertyPage))]
[ProvideProjectFactory(typeof(yyProjectFactory), null, "yy Project Files (*.yyproj);*.yyproj", "yyproj", "yyproj", ".\\NullPath", LanguageVsTemplate = yyProjectFactory.PROJECT_TYPE)]
[ProvideProjectFactory(typeof(xxProjectFactory), null, "xx Project Files (*.xxproj);*.xxproj", "xxproj", "xxproj", ".\\NullPath", LanguageVsTemplate = xxProjectFactory.PROJECT_TYPE)]
其他两个属性页都是 COM 可见的并实现 SettingsPage。我还在项目节点中添加了获取属性页方法。
protected override Guid[] GetConfigurationIndependentPropertyPages()
{
Guid[] result = new Guid[1];
result[0] = typeof(xxPropertyPage).GUID;
return result;
}
/// <summary>
/// Overriding to provide project general property page.
/// </summary>
/// <returns>Returns the GeneralPropertyPage GUID value.</returns>
protected override Guid[] GetPriorityProjectDesignerPages()
{
Guid[] result = new Guid[1];
result[0] = typeof(xxPropertyPage).GUID;
return result;
}
生成属性页所需的 .xxProj/.yyProj 文件中是否需要包含某些特定内容,或者我可能忽略了某些内容?
.yyProj 文件示例:
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{F4A26EF6-E6CF-4486-A948-8498EE475EFF}</ProjectGuid>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
</PropertyGroup>
<PropertyGroup>
<TargetName>$productvendor$.$productname$.Product</TargetName>
<OutputType>xxProject</OutputType>
<SDKVersion>v3.1</SDKVersion>
<VendorName>$productvendor$</VendorName>
<ProductName>$productname$</ProductName>
<ProductCategory>$productcategory$</ProductCategory>
<ProductGuid>$productguid$</ProductGuid>
</PropertyGroup>
<ItemGroup>
<Compile Include="xx.pxs" /> <--pxs is used by the xxProj-->
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\SDKCompany\Exchange\$(SDKVersion)\SDKCompany.Xchng.Product.xx.Settings.targets" />
<Import Project="$(MSBuildExtensionsPath)\SDKCompany\Exchange\$(SDKVersion)\SDKCompany.Xchng.Product.xx.targets" />
</Project>