带有 MEF 编辑器扩展的 C# VSIX 项目模板
C# VSIX Project template with MEF editor extension
我正在尝试使用 VS 2013 创建一个 VSIX 扩展,其中包含两个项目(和包项目本身,所有三个项目都属于同一个解决方案)。其中一个项目是常用的Project Template,另一个是MEF editor extension(自定义代码高亮,可以编译成单独的vsix) .现在我想将这些项目合并到一个扩展中,并使我的代码突出显示 仅在 项目模板 的范围内工作(当它用作新的project later, when installed),但不在全局范围内(对于任何新项目类型)。可能吗?
V6 清单代码:
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="27a359e4-cefd-47c0-a02b-3454284a7a46" Version="1.0" Language="en-US" Publisher="ladybug" />
<DisplayName>TestPackage</DisplayName>
<Description>TestInformation</Description>
<Icon>Resources\Package.ico</Icon>
</Metadata>
<Installation InstalledByMsi="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[12.0,]" />
<InstallationTarget Version="[12.0,]" Id="Microsoft.VisualStudio.Ultimate" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[3.5,)" />
<Dependency Id="Microsoft.VisualStudio.MPF.12.0" DisplayName="Visual Studio MPF 12.0" d:Source="Installed" Version="[12.0,]" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" Path="|CodeHighligherClassifier|" />
</Assets>
</PackageManifest>
这个组合包编译没有错误,但我无法安装它:
Install Error : System.NullReferenceException: Object reference not set to an instance of an object
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework(IExtension extension)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForInstallBlockers(InstallableExtensionImpl extension, IInstalledExtensionList modifiedInstalledExtensionsList, Boolean isNestedExtension, Boolean& olderVersionInstalled)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallInternal(InstallableExtensionImpl extension, Boolean perMachine, Boolean isNestedExtension, IDictionary`2 extensionsInstalledSoFar, List`1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, AsyncOperation asyncOp, UInt64 totalBytesToWrite, UInt64& totalBytesWritten)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.BeginInstall(IInstallableExtension installableExtension, Boolean perMachine, AsyncOperation asyncOp)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallWorker(IInstallableExtension extension, Boolean perMachine, AsyncOperation asyncOp)
什么可能导致这个错误(删除 Dependency Id="Microsoft.Framework.NDP" 解决了它,但我想保留它)?
我在使用相同的堆栈跟踪时遇到错误。这是由extension.vsixmanifest
中的这一行引起的:
<SupportedFrameworkRuntimeEdition MinVersion="2.0" />
问题是我没有指定 MaxVersion,并且 Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework 中有错误代码尝试检查最大版本而不首先测试它是否为空。解决方案是将该行更改为:
<SupportedFrameworkRuntimeEdition MinVersion="2.0" MaxVersion="99.99" />
另一个团队也遇到了类似的问题:
http://www.grasshopper3d.com/forum/topics/error-installing-gh-visual-studio-package
我正在尝试使用 VS 2013 创建一个 VSIX 扩展,其中包含两个项目(和包项目本身,所有三个项目都属于同一个解决方案)。其中一个项目是常用的Project Template,另一个是MEF editor extension(自定义代码高亮,可以编译成单独的vsix) .现在我想将这些项目合并到一个扩展中,并使我的代码突出显示 仅在 项目模板 的范围内工作(当它用作新的project later, when installed),但不在全局范围内(对于任何新项目类型)。可能吗?
V6 清单代码:
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Id="27a359e4-cefd-47c0-a02b-3454284a7a46" Version="1.0" Language="en-US" Publisher="ladybug" />
<DisplayName>TestPackage</DisplayName>
<Description>TestInformation</Description>
<Icon>Resources\Package.ico</Icon>
</Metadata>
<Installation InstalledByMsi="false">
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[12.0,]" />
<InstallationTarget Version="[12.0,]" Id="Microsoft.VisualStudio.Ultimate" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" d:Source="Manual" Version="[3.5,)" />
<Dependency Id="Microsoft.VisualStudio.MPF.12.0" DisplayName="Visual Studio MPF 12.0" d:Source="Installed" Version="[12.0,]" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.VsPackage" d:Source="Project" d:ProjectName="%CurrentProject%" Path="|%CurrentProject%;PkgdefProjectOutputGroup|" />
<Asset Type="Microsoft.VisualStudio.MefComponent" d:Source="Project" Path="|CodeHighligherClassifier|" />
</Assets>
</PackageManifest>
这个组合包编译没有错误,但我无法安装它:
Install Error : System.NullReferenceException: Object reference not set to an instance of an object
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework(IExtension extension)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForInstallBlockers(InstallableExtensionImpl extension, IInstalledExtensionList modifiedInstalledExtensionsList, Boolean isNestedExtension, Boolean& olderVersionInstalled)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallInternal(InstallableExtensionImpl extension, Boolean perMachine, Boolean isNestedExtension, IDictionary`2 extensionsInstalledSoFar, List`1 extensionsUninstalledSoFar, IInstalledExtensionList modifiedInstalledExtensionsList, AsyncOperation asyncOp, UInt64 totalBytesToWrite, UInt64& totalBytesWritten)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.BeginInstall(IInstallableExtension installableExtension, Boolean perMachine, AsyncOperation asyncOp)
in Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.InstallWorker(IInstallableExtension extension, Boolean perMachine, AsyncOperation asyncOp)
什么可能导致这个错误(删除 Dependency Id="Microsoft.Framework.NDP" 解决了它,但我想保留它)?
我在使用相同的堆栈跟踪时遇到错误。这是由extension.vsixmanifest
中的这一行引起的:
<SupportedFrameworkRuntimeEdition MinVersion="2.0" />
问题是我没有指定 MaxVersion,并且 Microsoft.VisualStudio.ExtensionManager.ExtensionManagerService.CheckForValidDotNetFramework 中有错误代码尝试检查最大版本而不首先测试它是否为空。解决方案是将该行更改为:
<SupportedFrameworkRuntimeEdition MinVersion="2.0" MaxVersion="99.99" />
另一个团队也遇到了类似的问题:
http://www.grasshopper3d.com/forum/topics/error-installing-gh-visual-studio-package