Исключение при загрузке шаблона проекта VSTA VB
Всем Привет
Я хотел бы использовать VSTA для VS2017 для нескольких моих проектов. Я никогда ничего не делал с ним до того, как начал с документа "VSTA Sample Host Integration.docx - который я нашел в папке Microsoft SDK. Я мог бы создать первое приложение на C#, и оно работает. Я мог бы реализовать свои собственные функции и объекты, и пока это выглядит хорошо. Все примеры в документации приведены на языке C#, но там говорится, что можно использовать и VB. План состоял в том, чтобы переключиться на VB, как только я получу C# для запуска.Я перевел все на VB и могу открыть IDE, но загрузка проекта выбрасывает "систему.Исключение"
Imports Microsoft.VisualStudio.Tools.Applications Imports System.IO Imports System.Reflection
Private _session As Session Private _project As Project
Public Sub OpenIDE() If IsNothing(_session) = True Then Dim sessionMgr As SessionManager = SessionManager.Create("MyHostApp") _session = sessionMgr.CreateSession() End If _session.Ide.Show() End Sub
Public Sub NewVSTAProject() If (IsNothing(_session) = True) Or (IsNothing(_project) = False) Then 'Error handling Exit Sub End If Dim storageCS As IProjectStorage = ProjectStorage.CreateStorageFromTemplate("templateCS.vstax", "csaddin", "VSTASampleCS", Nothing) Dim storageVB As IProjectStorage = ProjectStorage.CreateStorageFromTemplate("templateVB.vstax", "vbaddin", "VSTASampleVB", Nothing) _project = _session.LoadProject(storageVB) <-----Exception _project = _session.LoadProject(storageCS) End Sub
Что я уже пробовал:
Я использовал документацию и мог успешно создавать
-Файл с шаблоном# вста
-приложение, которое открывает IDE и запускает скрипт на языке Си#
Я сделал все шаги в документации и перевел их на VB. GUID в TemplateProject имеет значение VB. Пожалуйста, смотрите файлы проекта ниже.
: Проектшаблона.vbproj
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <ProjectGuid>{$guid1$}</ProjectGuid> <OutputType>Library</OutputType> <RootNamespace>$safeprojectname$</RootNamespace> <AssemblyName>$safeprojectname$</AssemblyName> <FileAlignment>512</FileAlignment> <MyType>Windows</MyType> <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <DebugSymbols>true</DebugSymbols> <DebugType>full</DebugType> <DefineDebug>true</DefineDebug> <DefineTrace>true</DefineTrace> <OutputPath>bin\Debug\</OutputPath> <DocumentationFile>$safeprojectname$.xml</DocumentationFile> <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <DebugType>pdbonly</DebugType> <DefineDebug>false</DefineDebug> <DefineTrace>true</DefineTrace> <Optimize>true</Optimize> <OutputPath>bin\Release\</OutputPath> <DocumentationFile>$safeprojectname$.xml</DocumentationFile> <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> <ProjectTypeGuids>{30D016F9-3734-4E33-A861-5E7D899E18F3};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</ProjectTypeGuids> </PropertyGroup> <PropertyGroup> <OptionExplicit>On</OptionExplicit> </PropertyGroup> <PropertyGroup> <OptionCompare>Binary</OptionCompare> </PropertyGroup> <PropertyGroup> <OptionStrict>Off</OptionStrict> </PropertyGroup> <PropertyGroup> <OptionInfer>On</OptionInfer> </PropertyGroup> <ItemGroup> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> <Reference Include="System.Core" /> <Reference Include="System.Xml.Linq" /> <Reference Include="System.Data.DataSetExtensions" /> <Reference Include="System.Net.Http" /> </ItemGroup> <ItemGroup> <Import Include="Microsoft.VisualBasic" /> <Import Include="System" /> <Import Include="System.Collections" /> <Import Include="System.Collections.Generic" /> <Import Include="System.Data" /> <Import Include="System.Diagnostics" /> <Import Include="System.Linq" /> <Import Include="System.Xml.Linq" /> <Import Include="System.Threading.Tasks" /> </ItemGroup> <ItemGroup> <Compile Include="AddIN.vb" /> <Compile Include="My Project\AssemblyInfo.vb" /> <Compile Include="My Project\Application.Designer.vb"> <AutoGen>True</AutoGen> <DependentUpon>Application.myapp</DependentUpon> </Compile> <Compile Include="My Project\Resources.Designer.vb"> <AutoGen>True</AutoGen> <DesignTime>True</DesignTime> <DependentUpon>Resources.resx</DependentUpon> </Compile> <Compile Include="My Project\Settings.Designer.vb"> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> <DesignTimeSharedInput>True</DesignTimeSharedInput> </Compile> </ItemGroup> <ItemGroup> <EmbeddedResource Include="My Project\Resources.resx"> <Generator>VbMyResourcesResXFileCodeGenerator</Generator> <LastGenOutput>Resources.Designer.vb</LastGenOutput> <CustomToolNamespace>My.Resources</CustomToolNamespace> <SubType>Designer</SubType> </EmbeddedResource> </ItemGroup> <ItemGroup> <None Include="My Project\Application.myapp"> <Generator>MyApplicationCodeGenerator</Generator> <LastGenOutput>Application.Designer.vb</LastGenOutput> </None> <None Include="My Project\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <CustomToolNamespace>My</CustomToolNamespace> <LastGenOutput>Settings.Designer.vb</LastGenOutput> </None> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> <ProjectExtensions> <VisualStudio> <FlavorProperties GUID="{30D016F9-3734-4E33-A861-5E7D899E18F3}"> <ProjectProperties HostName="MyHostApp" HostPackage="{B3A685AA-7EAF-4BC6-9940-57959FA5AC07}" ApplicationType="" Language="vb" TemplatesPath="" /> </FlavorProperties> </VisualStudio> </ProjectExtensions> </Project>
manifestVB.xml
<?xml version="1.0" encoding="utf-8" ?> <VstaTemplates xmlns="http://schemas.microsoft.com/developer/vstatemplatemanifest/2011" TemplateVersion="1.0"> <ProjectTemplate ProjectType="msBuild" TemplateName="vbaddin"> <ProjectItems> <ProjectItem ReplaceParameters="true" SourceFilePath="TemplateProjectVB\TemplateProject.vbproj" TemplateFilePath="vbaddin\AddIn.vbproj" TargetFilePath="$projectname$.csproj" TargetItemType="Project" /> <ProjectItem ReplaceParameters="true" SourceFilePath="TemplateProjectVB\AddIn.vb" TemplateFilePath="vbaddin\AddIn.vb" TargetFilePath="AddIn.vb" /> <ProjectItem ReplaceParameters="true" SourceFilePath="TemplateProjectVB\My Project\AssemblyInfo.vb" TemplateFilePath="vbaddin\AssemblyInfo.vb" TargetFilePath="vbaddin\AssemblyInfo.vb" /> <AutoGenProjectItem TargetFilePath="mygeneratedkeyfile.snk" AutoGenerate="StrongNameKeyFile" /> </ProjectItems> </ProjectTemplate> </VstaTemplates>
Отличается.ВБ
Imports System Imports System.Reflection Imports System.Runtime.InteropServices ' General Information about an assembly is controlled through the following ' set of attributes. Change these attribute values to modify the information ' associated with an assembly. ' Review the values of the assembly attributes <Assembly: AssemblyTitle("$safeprojectname$")> <Assembly: AssemblyDescription("")> <Assembly: AssemblyCompany("")> <Assembly: AssemblyProduct("$safeprojectname$")> <Assembly: AssemblyCopyright("")> <Assembly: AssemblyTrademark("")> <Assembly: ComVisible(False)> 'The following GUID is for the ID of the typelib if this project is exposed to COM <Assembly: Guid("$guid2$")> ' Version information for an assembly consists of the following four values: ' ' Major Version ' Minor Version ' Build Number ' Revision ' ' You can specify all the values or you can default the Build and Revision Numbers ' by using the '*' as shown below: ' <Assembly: AssemblyVersion("1.0.*")> <Assembly: AssemblyVersion("1.0.0.0")> <Assembly: AssemblyFileVersion("1.0.0.0")>
Я использовал исполняемый файл "EnableVstaEventLogging.exe-который находится в SDK...Папка Tools для активации дополнительных выходных данных в средстве просмотра событий. Он показывает 2 предупреждения и 1 ошибку, но я не знаю, что с этим делать.
2 предупреждения
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> - <System> <Provider Name="VSTA" /> <EventID Qualifiers="0">0</EventID> <Level>3</Level> <Task>0</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2018-03-07T21:48:29.000000000Z" /> <EventRecordID>100</EventRecordID> <Channel>VSTA Log</Channel> <Computer>N7P179USB64BIT.de.cenit-group.com</Computer> <Security /> </System> - <EventData> <Data>devenv(19600): Warning: System.Runtime.InteropServices.COMException (0x80004005): A project with that name is already opened in the solution. at EnvDTE.SolutionClass.AddFromFile(String FileName, Boolean Exclusive) at Microsoft.VisualStudio.Tools.Applications.Package.IdeWcfService.<>c__DisplayClass32_1.<AddProjectFromFile>b__0() at Microsoft.VisualStudio.Tools.Applications.Common.VstaCallbackBase.ExecuteAction(String id) 3/7/2018 1:48:29 PM</Data> </EventData> </Event>
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> - <System> <Provider Name="VSTA" /> <EventID Qualifiers="0">0</EventID> <Level>3</Level> <Task>0</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2018-03-07T21:48:29.000000000Z" /> <EventRecordID>101</EventRecordID> <Channel>VSTA Log</Channel> <Computer>N7P179USB64BIT.de.cenit-group.com</Computer> <Security /> </System> - <EventData> <Data>devenv(19600): Warning: System.Runtime.InteropServices.COMException (0x80004005): A project with that name is already opened in the solution. at Microsoft.VisualStudio.Tools.Applications.Common.VstaCallbackBase.InvokeOnMainThread(String name, Action action) at Microsoft.VisualStudio.Tools.Applications.Package.VstaPackage.InvokeOnMainThreadIfNeeded(String name, Action action) at Microsoft.VisualStudio.Tools.Applications.Package.IdeWcfService.AddProjectFromFile(String relativeProjectPath, String relativeSolutionPath, String solutionName, String codeFileExtension, Boolean returnReferencePathList, Boolean getPrjImports, String& rootDir, VstaIdeProjectItemInfo[]& initProjItemInfoList, String[]& referencePathList, String[]& importsList) 3/7/2018 1:48:29 PM</Data> </EventData> </Event>
Ошибка:
- <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> - <System> <Provider Name="VSTA" /> <EventID Qualifiers="0">0</EventID> <Level>2</Level> <Task>0</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2018-03-07T21:48:29.000000000Z" /> <EventRecordID>102</EventRecordID> <Channel>VSTA Log</Channel> <Computer>N7P179USB64BIT.de.cenit-group.com</Computer> <Security /> </System> - <EventData> <Data>AutoFast(10220): Error: Microsoft.VisualStudio.Tools.Applications.IdeCommunications.IdeException: Exception of type 'Microsoft.VisualStudio.Tools.Applications.IdeCommunications.IdeException' was thrown. at Microsoft.VisualStudio.Tools.Applications.Common.VstaWcfProxyBase`2.CallService[LT](Func`1 func, Boolean ignoreCommunicationFailure) at Microsoft.VisualStudio.Tools.Applications.IdeCommunications.IdeProxy.AddProjectFromFile(String relativeProjectName, String relativeSolutionPath, String solutionName, String codeFileExtension, List`1 referencePathList, List`1 projectImportList, VstaIdeProjectItemInfo[]& initProjItemInfoList) at Microsoft.VisualStudio.Tools.Applications.IdeCommunications.IdeServer.AddProjectFromFile(String relativeProjectName, String relativeSolutionPath, String solutionName, String codeFileExtension, List`1 referencePathList, List`1 projectImportList, VstaIdeProjectItemInfo[]& initProjItemInfoList) at Microsoft.VisualStudio.Tools.Applications.IdeCommunications.IdeCommunicationsServer.Microsoft.VisualStudio.Tools.Applications.IdeCommunications.External.IIdeCommunications.OpenProject(IIdeProjectCallback ideProjectCallback, IDataStore dataStore) 3/7/2018 1:48:29 PM</Data> </EventData> </Event>
В предупреждении говорится, что есть проект с таким же названием, но я немного заблудился. Я проверил переменную "storageVB" и похоже, что там GUID заменяются и они меняются, если я перекомпилирую.
Большое вам спасибо за вашу помощь и чтение этой книги! Если вам нужна дополнительная информация, пожалуйста, дайте мне знать.
Спасибо!
Марк