From 6e06ee407b3bc196d99e370fa56e9aa8fbed31e2 Mon Sep 17 00:00:00 2001
From: Andreas Weizel <rpinski@awzhome.de>
Date: Sat, 16 Oct 2021 23:26:09 +0200
Subject: [PATCH] Prepare separation of AddIn for VS 2019 and VS 2022

- Move most code to a shared project/shared folder
---
 .../AssemblyFileFinder.cs                     |   0
 .../Commands/AssemblyReferenceForILSpy.cs     |   0
 .../Commands/NuGetReferenceForILSpy.cs        |   0
 .../Commands/OpenCodeItemCommand.cs           |   0
 .../Commands/OpenILSpyCommand.cs              |   0
 .../Commands/OpenProjectOutputCommand.cs      |   0
 .../Commands/OpenReferenceCommand.cs          |   0
 .../Commands/ProjectItemForILSpy.cs           |   0
 .../Commands/ProjectReferenceForILSpy.cs      |   0
 .../GlobalSuppressions.cs                     |   0
 {ILSpy.AddIn => ILSpy.AddIn.Shared}/Guids.cs  |   0
 .../ILSpy.AddIn.Shared.projitems              |  55 ++++++++++++
 ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj  |  13 +++
 .../ILSpyAddInPackage.cs                      |   0
 .../ILSpyInstance.cs                          |   0
 .../PkgCmdID.cs                               |   0
 .../Resources.Designer.cs                     |   2 +-
 .../Resources.resx                            |   0
 .../SyntaxNodeExtensions.cs                   |   0
 {ILSpy.AddIn => ILSpy.AddIn.Shared}/Utils.cs  |   0
 .../VSPackage.en-US.resx                      |   0
 .../VSPackage.resx                            |   2 +-
 .../VSPackage.zh-Hans.resx                    |   0
 .../ILSpy-Large.ico                           | Bin
 .../ILSpyAddIn.en-US.vsct                     |   0
 .../ILSpyAddIn.vsct                           |   0
 .../ILSpyAddIn.zh-Hans.vsct                   |   0
 .../Resources/Images.png                      | Bin
 .../Resources/Package.ico                     | Bin
 ILSpy.AddIn/ILSpy.AddIn.csproj                |  85 ++++++------------
 ILSpy.sln                                     |   6 ++
 31 files changed, 103 insertions(+), 60 deletions(-)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/AssemblyFileFinder.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/AssemblyReferenceForILSpy.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/NuGetReferenceForILSpy.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/OpenCodeItemCommand.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/OpenILSpyCommand.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/OpenProjectOutputCommand.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/OpenReferenceCommand.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/ProjectItemForILSpy.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Commands/ProjectReferenceForILSpy.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/GlobalSuppressions.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Guids.cs (100%)
 create mode 100644 ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems
 create mode 100644 ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/ILSpyAddInPackage.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/ILSpyInstance.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/PkgCmdID.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Resources.Designer.cs (97%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Resources.resx (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/SyntaxNodeExtensions.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/Utils.cs (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/VSPackage.en-US.resx (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/VSPackage.resx (97%)
 rename {ILSpy.AddIn => ILSpy.AddIn.Shared}/VSPackage.zh-Hans.resx (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/ILSpy-Large.ico (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/ILSpyAddIn.en-US.vsct (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/ILSpyAddIn.vsct (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/ILSpyAddIn.zh-Hans.vsct (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/Resources/Images.png (100%)
 rename {ILSpy.AddIn => ILSpy.AddIn.SharedFiles}/Resources/Package.ico (100%)

diff --git a/ILSpy.AddIn/AssemblyFileFinder.cs b/ILSpy.AddIn.Shared/AssemblyFileFinder.cs
similarity index 100%
rename from ILSpy.AddIn/AssemblyFileFinder.cs
rename to ILSpy.AddIn.Shared/AssemblyFileFinder.cs
diff --git a/ILSpy.AddIn/Commands/AssemblyReferenceForILSpy.cs b/ILSpy.AddIn.Shared/Commands/AssemblyReferenceForILSpy.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/AssemblyReferenceForILSpy.cs
rename to ILSpy.AddIn.Shared/Commands/AssemblyReferenceForILSpy.cs
diff --git a/ILSpy.AddIn/Commands/NuGetReferenceForILSpy.cs b/ILSpy.AddIn.Shared/Commands/NuGetReferenceForILSpy.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/NuGetReferenceForILSpy.cs
rename to ILSpy.AddIn.Shared/Commands/NuGetReferenceForILSpy.cs
diff --git a/ILSpy.AddIn/Commands/OpenCodeItemCommand.cs b/ILSpy.AddIn.Shared/Commands/OpenCodeItemCommand.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/OpenCodeItemCommand.cs
rename to ILSpy.AddIn.Shared/Commands/OpenCodeItemCommand.cs
diff --git a/ILSpy.AddIn/Commands/OpenILSpyCommand.cs b/ILSpy.AddIn.Shared/Commands/OpenILSpyCommand.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/OpenILSpyCommand.cs
rename to ILSpy.AddIn.Shared/Commands/OpenILSpyCommand.cs
diff --git a/ILSpy.AddIn/Commands/OpenProjectOutputCommand.cs b/ILSpy.AddIn.Shared/Commands/OpenProjectOutputCommand.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/OpenProjectOutputCommand.cs
rename to ILSpy.AddIn.Shared/Commands/OpenProjectOutputCommand.cs
diff --git a/ILSpy.AddIn/Commands/OpenReferenceCommand.cs b/ILSpy.AddIn.Shared/Commands/OpenReferenceCommand.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/OpenReferenceCommand.cs
rename to ILSpy.AddIn.Shared/Commands/OpenReferenceCommand.cs
diff --git a/ILSpy.AddIn/Commands/ProjectItemForILSpy.cs b/ILSpy.AddIn.Shared/Commands/ProjectItemForILSpy.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/ProjectItemForILSpy.cs
rename to ILSpy.AddIn.Shared/Commands/ProjectItemForILSpy.cs
diff --git a/ILSpy.AddIn/Commands/ProjectReferenceForILSpy.cs b/ILSpy.AddIn.Shared/Commands/ProjectReferenceForILSpy.cs
similarity index 100%
rename from ILSpy.AddIn/Commands/ProjectReferenceForILSpy.cs
rename to ILSpy.AddIn.Shared/Commands/ProjectReferenceForILSpy.cs
diff --git a/ILSpy.AddIn/GlobalSuppressions.cs b/ILSpy.AddIn.Shared/GlobalSuppressions.cs
similarity index 100%
rename from ILSpy.AddIn/GlobalSuppressions.cs
rename to ILSpy.AddIn.Shared/GlobalSuppressions.cs
diff --git a/ILSpy.AddIn/Guids.cs b/ILSpy.AddIn.Shared/Guids.cs
similarity index 100%
rename from ILSpy.AddIn/Guids.cs
rename to ILSpy.AddIn.Shared/Guids.cs
diff --git a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems
new file mode 100644
index 000000000..4c01156b5
--- /dev/null
+++ b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <MSBuildAllProjects Condition="'$(MSBuildVersion)' == '' Or '$(MSBuildVersion)' &lt; '16.0'">$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
+    <HasSharedItems>true</HasSharedItems>
+    <SharedGUID>acab1e5d-b3df-4092-aa72-692f8341e520</SharedGUID>
+  </PropertyGroup>
+  <PropertyGroup Label="Configuration">
+    <Import_RootNamespace>ILSpy.AddIn.Shared</Import_RootNamespace>
+  </PropertyGroup>
+  <ItemGroup>
+    <Compile Include="$(MSBuildThisFileDirectory)AssemblyFileFinder.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\AssemblyReferenceForILSpy.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\NuGetReferenceForILSpy.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\OpenCodeItemCommand.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\OpenILSpyCommand.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\OpenProjectOutputCommand.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\OpenReferenceCommand.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\ProjectItemForILSpy.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Commands\ProjectReferenceForILSpy.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)GlobalSuppressions.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Guids.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)ILSpyAddInPackage.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)ILSpyInstance.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)PkgCmdID.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Resources.Designer.cs">
+      <DependentUpon>Resources.resx</DependentUpon>
+      <DesignTime>True</DesignTime>
+      <AutoGen>True</AutoGen>
+    </Compile>
+    <Compile Include="$(MSBuildThisFileDirectory)SyntaxNodeExtensions.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)Utils.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="$(MSBuildThisFileDirectory)Resources.resx">
+      <SubType>Designer</SubType>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+      <Generator>ResXFileCodeGenerator</Generator>
+    </EmbeddedResource>
+    <EmbeddedResource Include="$(MSBuildThisFileDirectory)VSPackage.en-US.resx">
+      <DependentUpon>VSPackage.resx</DependentUpon>
+      <LogicalName>VSPackage.en-US.resources</LogicalName>
+      <MergeWithCTO>true</MergeWithCTO>
+    </EmbeddedResource>
+    <EmbeddedResource Include="$(MSBuildThisFileDirectory)VSPackage.resx">
+      <MergeWithCTO>true</MergeWithCTO>
+      <ManifestResourceName>VSPackage</ManifestResourceName>
+    </EmbeddedResource>
+    <EmbeddedResource Include="$(MSBuildThisFileDirectory)VSPackage.zh-Hans.resx">
+      <DependentUpon>VSPackage.resx</DependentUpon>
+      <LogicalName>VSPackage.zh-Hans.resources</LogicalName>
+      <MergeWithCTO>true</MergeWithCTO>
+    </EmbeddedResource>
+  </ItemGroup>
+</Project>
\ No newline at end of file
diff --git a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj
new file mode 100644
index 000000000..80c9f2877
--- /dev/null
+++ b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>acab1e5d-b3df-4092-aa72-692f8341e520</ProjectGuid>
+    <MinimumVisualStudioVersion>14.0</MinimumVisualStudioVersion>
+  </PropertyGroup>
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.Default.props" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.Common.props" />
+  <PropertyGroup />
+  <Import Project="ILSpy.AddIn.Shared.projitems" Label="Shared" />
+  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CodeSharing\Microsoft.CodeSharing.CSharp.targets" />
+</Project>
diff --git a/ILSpy.AddIn/ILSpyAddInPackage.cs b/ILSpy.AddIn.Shared/ILSpyAddInPackage.cs
similarity index 100%
rename from ILSpy.AddIn/ILSpyAddInPackage.cs
rename to ILSpy.AddIn.Shared/ILSpyAddInPackage.cs
diff --git a/ILSpy.AddIn/ILSpyInstance.cs b/ILSpy.AddIn.Shared/ILSpyInstance.cs
similarity index 100%
rename from ILSpy.AddIn/ILSpyInstance.cs
rename to ILSpy.AddIn.Shared/ILSpyInstance.cs
diff --git a/ILSpy.AddIn/PkgCmdID.cs b/ILSpy.AddIn.Shared/PkgCmdID.cs
similarity index 100%
rename from ILSpy.AddIn/PkgCmdID.cs
rename to ILSpy.AddIn.Shared/PkgCmdID.cs
diff --git a/ILSpy.AddIn/Resources.Designer.cs b/ILSpy.AddIn.Shared/Resources.Designer.cs
similarity index 97%
rename from ILSpy.AddIn/Resources.Designer.cs
rename to ILSpy.AddIn.Shared/Resources.Designer.cs
index 7fd7fbc44..24622b11d 100644
--- a/ILSpy.AddIn/Resources.Designer.cs
+++ b/ILSpy.AddIn.Shared/Resources.Designer.cs
@@ -19,7 +19,7 @@ namespace ICSharpCode.ILSpy.AddIn {
     // class via a tool like ResGen or Visual Studio.
     // To add or remove a member, edit your .ResX file then rerun ResGen
     // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
     internal class Resources {
diff --git a/ILSpy.AddIn/Resources.resx b/ILSpy.AddIn.Shared/Resources.resx
similarity index 100%
rename from ILSpy.AddIn/Resources.resx
rename to ILSpy.AddIn.Shared/Resources.resx
diff --git a/ILSpy.AddIn/SyntaxNodeExtensions.cs b/ILSpy.AddIn.Shared/SyntaxNodeExtensions.cs
similarity index 100%
rename from ILSpy.AddIn/SyntaxNodeExtensions.cs
rename to ILSpy.AddIn.Shared/SyntaxNodeExtensions.cs
diff --git a/ILSpy.AddIn/Utils.cs b/ILSpy.AddIn.Shared/Utils.cs
similarity index 100%
rename from ILSpy.AddIn/Utils.cs
rename to ILSpy.AddIn.Shared/Utils.cs
diff --git a/ILSpy.AddIn/VSPackage.en-US.resx b/ILSpy.AddIn.Shared/VSPackage.en-US.resx
similarity index 100%
rename from ILSpy.AddIn/VSPackage.en-US.resx
rename to ILSpy.AddIn.Shared/VSPackage.en-US.resx
diff --git a/ILSpy.AddIn/VSPackage.resx b/ILSpy.AddIn.Shared/VSPackage.resx
similarity index 97%
rename from ILSpy.AddIn/VSPackage.resx
rename to ILSpy.AddIn.Shared/VSPackage.resx
index 345019f09..630c430e6 100644
--- a/ILSpy.AddIn/VSPackage.resx
+++ b/ILSpy.AddIn.Shared/VSPackage.resx
@@ -135,6 +135,6 @@
     <value>Integration of the ILSpy Decompiler into Visual Studio.</value>
   </data>
   <data name="400" type="System.Resources.ResXFileRef, System.Windows.Forms">
-    <value>Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+    <value>..\ILSpy.AddIn.SharedFiles\Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
 </root>
\ No newline at end of file
diff --git a/ILSpy.AddIn/VSPackage.zh-Hans.resx b/ILSpy.AddIn.Shared/VSPackage.zh-Hans.resx
similarity index 100%
rename from ILSpy.AddIn/VSPackage.zh-Hans.resx
rename to ILSpy.AddIn.Shared/VSPackage.zh-Hans.resx
diff --git a/ILSpy.AddIn/ILSpy-Large.ico b/ILSpy.AddIn.SharedFiles/ILSpy-Large.ico
similarity index 100%
rename from ILSpy.AddIn/ILSpy-Large.ico
rename to ILSpy.AddIn.SharedFiles/ILSpy-Large.ico
diff --git a/ILSpy.AddIn/ILSpyAddIn.en-US.vsct b/ILSpy.AddIn.SharedFiles/ILSpyAddIn.en-US.vsct
similarity index 100%
rename from ILSpy.AddIn/ILSpyAddIn.en-US.vsct
rename to ILSpy.AddIn.SharedFiles/ILSpyAddIn.en-US.vsct
diff --git a/ILSpy.AddIn/ILSpyAddIn.vsct b/ILSpy.AddIn.SharedFiles/ILSpyAddIn.vsct
similarity index 100%
rename from ILSpy.AddIn/ILSpyAddIn.vsct
rename to ILSpy.AddIn.SharedFiles/ILSpyAddIn.vsct
diff --git a/ILSpy.AddIn/ILSpyAddIn.zh-Hans.vsct b/ILSpy.AddIn.SharedFiles/ILSpyAddIn.zh-Hans.vsct
similarity index 100%
rename from ILSpy.AddIn/ILSpyAddIn.zh-Hans.vsct
rename to ILSpy.AddIn.SharedFiles/ILSpyAddIn.zh-Hans.vsct
diff --git a/ILSpy.AddIn/Resources/Images.png b/ILSpy.AddIn.SharedFiles/Resources/Images.png
similarity index 100%
rename from ILSpy.AddIn/Resources/Images.png
rename to ILSpy.AddIn.SharedFiles/Resources/Images.png
diff --git a/ILSpy.AddIn/Resources/Package.ico b/ILSpy.AddIn.SharedFiles/Resources/Package.ico
similarity index 100%
rename from ILSpy.AddIn/Resources/Package.ico
rename to ILSpy.AddIn.SharedFiles/Resources/Package.ico
diff --git a/ILSpy.AddIn/ILSpy.AddIn.csproj b/ILSpy.AddIn/ILSpy.AddIn.csproj
index af12ddabc..9d96e9027 100644
--- a/ILSpy.AddIn/ILSpy.AddIn.csproj
+++ b/ILSpy.AddIn/ILSpy.AddIn.csproj
@@ -77,51 +77,8 @@
     <Compile Include="..\ICSharpCode.Decompiler\Util\EmptyList.cs" Link="Decompiler\EmptyList.cs" />
     <Compile Include="..\ICSharpCode.Decompiler\Util\NullAttributes.cs" Link="NullAttributes.cs" />
     <Compile Include="..\ILSpy\NativeMethods.cs" Link="NativeMethods.cs" />
-    <Compile Include="Commands\AssemblyReferenceForILSpy.cs" />
-    <Compile Include="Commands\NuGetReferenceForILSpy.cs" />
-    <Compile Include="Commands\ProjectItemForILSpy.cs" />
-    <Compile Include="Commands\ProjectReferenceForILSpy.cs" />
-    <Compile Include="Commands\OpenCodeItemCommand.cs" />
-    <Compile Include="Commands\OpenILSpyCommand.cs" />
-    <Compile Include="Commands\OpenProjectOutputCommand.cs" />
-    <Compile Include="Commands\OpenReferenceCommand.cs" />
     <Compile Include="Decompiler\Dummy.cs" />
-    <Compile Include="Guids.cs" />
-    <Compile Include="ILSpyInstance.cs" />
-    <Compile Include="Resources.Designer.cs">
-      <AutoGen>True</AutoGen>
-      <DesignTime>True</DesignTime>
-      <DependentUpon>Resources.resx</DependentUpon>
-    </Compile>
-    <Compile Include="GlobalSuppressions.cs" />
-    <Compile Include="ILSpyAddInPackage.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="PkgCmdID.cs" />
-    <Compile Include="SyntaxNodeExtensions.cs" />
-    <Compile Include="AssemblyFileFinder.cs" />
-    <Compile Include="Utils.cs" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <EmbeddedResource Include="Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
-      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="VSPackage.en-US.resx">
-      <MergeWithCTO>true</MergeWithCTO>
-      <LogicalName>VSPackage.en-US.resources</LogicalName>
-      <DependentUpon>VSPackage.resx</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="VSPackage.resx">
-      <MergeWithCTO>true</MergeWithCTO>
-      <ManifestResourceName>VSPackage</ManifestResourceName>
-    </EmbeddedResource>
-    <EmbeddedResource Include="VSPackage.zh-Hans.resx">
-      <MergeWithCTO>true</MergeWithCTO>
-      <LogicalName>VSPackage.zh-Hans.resources</LogicalName>
-      <DependentUpon>VSPackage.resx</DependentUpon>
-    </EmbeddedResource>
   </ItemGroup>
 
   <!--
@@ -153,34 +110,40 @@
       <IncludeInVSIX>true</IncludeInVSIX>
       <VSIXSubPath>\ILSpy\zh-Hans\</VSIXSubPath>
     </Content>
+    <Content Include="..\ILSpy.AddIn.SharedFiles\ILSpy-Large.ico" Link="ILSpy-Large.ico">
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      <IncludeInVSIX>true</IncludeInVSIX>
+    </Content>
+    <Content Include="..\ILSpy.AddIn.SharedFiles\Resources\Images.png" Link="Resources\Images.png" />
+    <Content Include="..\ILSpy.AddIn.SharedFiles\Resources\Package.ico" Link="Resources\Package.ico" />
   </ItemGroup>
 
   <ItemGroup>
-    <None Include="source.extension.vsixmanifest.template" />
-    <None Include="source.extension.vsixmanifest">
+    <None Include="..\ILSpy.AddIn.SharedFiles\ILSpyAddIn.en-US.vsct" Link="ILSpyAddIn.en-US.vsct">
       <SubType>Designer</SubType>
     </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="ILSpyAddIn.vsct">
+    <None Include="..\ILSpy.AddIn.SharedFiles\ILSpyAddIn.vsct" Link="ILSpyAddIn.vsct">
       <SubType>Designer</SubType>
     </None>
-    <None Include="ILSpyAddIn.en-US.vsct">
+    <None Include="..\ILSpy.AddIn.SharedFiles\ILSpyAddIn.zh-Hans.vsct" Link="ILSpyAddIn.zh-Hans.vsct">
       <SubType>Designer</SubType>
     </None>
-    <None Include="ILSpyAddIn.zh-Hans.vsct">
+    <None Include="source.extension.vsixmanifest.template" />
+    <None Include="source.extension.vsixmanifest">
       <SubType>Designer</SubType>
     </None>
+  </ItemGroup>
+  <ItemGroup>
     <Content Include="zh-Hans\extension.vsixlangpack">
       <IncludeInVSIX>true</IncludeInVSIX>
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </Content>
-    <VSCTCompile Include="ILSpyAddIn.en-US.vsct">
+    <VSCTCompile Include="..\ILSpy.AddIn.SharedFiles\ILSpyAddIn.en-US.vsct">
       <ResourceName>Menus.ctmenu</ResourceName>
       <SubType>Designer</SubType>
       <DependentUpon>ILSpyAddIn.vsct</DependentUpon>
     </VSCTCompile>
-    <VSCTCompile Include="ILSpyAddIn.zh-Hans.vsct">
+    <VSCTCompile Include="..\ILSpy.AddIn.SharedFiles\ILSpyAddIn.zh-Hans.vsct">
       <ResourceName>Menus.ctmenu</ResourceName>
       <SubType>Designer</SubType>
       <DependentUpon>ILSpyAddIn.vsct</DependentUpon>
@@ -192,19 +155,13 @@
 
   <ItemGroup>
     <None Include="Properties\launchSettings.json" />
-    <None Include="Resources\Images.png" />
   </ItemGroup>
 
   <ItemGroup>
-    <Content Include="ILSpy-Large.ico">
-      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
-      <IncludeInVSIX>true</IncludeInVSIX>
-    </Content>
     <Content Include="..\doc\license.txt" Link="license.txt">
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
       <IncludeInVSIX>true</IncludeInVSIX>
     </Content>
-    <Content Include="Resources\Package.ico" />
   </ItemGroup>
 
   <PropertyGroup>
@@ -213,8 +170,20 @@
     <RunAnalyzersDuringLiveAnalysis>true</RunAnalyzersDuringLiveAnalysis>
   </PropertyGroup>
 
+  <Import Project="..\ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems" Label="Shared" />
+
   <Import Sdk="Microsoft.NET.Sdk" Project="Sdk.targets" />
 
   <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="Exists('$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets')" />
 
+  <ItemGroup>
+    <Compile Update="C:\Andreas\projects\ILSpy\ILSpy.AddIn.Shared\Resources.Designer.cs">
+      <DesignTime>True</DesignTime>
+    </Compile>
+  </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Resources\" />
+  </ItemGroup>
+
 </Project>
diff --git a/ILSpy.sln b/ILSpy.sln
index 6739a0b21..ad66596a9 100644
--- a/ILSpy.sln
+++ b/ILSpy.sln
@@ -43,7 +43,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ICSharpCode.Decompiler.Cons
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ICSharpCode.Decompiler.PowerShell", "ICSharpCode.Decompiler.PowerShell\ICSharpCode.Decompiler.PowerShell.csproj", "{50060E0C-FA25-41F4-B72F-8490324EC9F0}"
 EndProject
+Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ILSpy.AddIn.Shared", "ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.shproj", "{ACAB1E5D-B3DF-4092-AA72-692F8341E520}"
+EndProject
 Global
+	GlobalSection(SharedMSBuildProjectFiles) = preSolution
+		ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems*{9d7be6c0-b7b3-4a50-a54e-18a2d84a3384}*SharedItemsImports = 5
+		ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems*{acab1e5d-b3df-4092-aa72-692f8341e520}*SharedItemsImports = 13
+	EndGlobalSection
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
 		Release|Any CPU = Release|Any CPU