VS 2017文档级加载项生成失败,COM可见组件

我已经安装了VS 2013,并添加了2017 RC。
我在C#中进行了一些文档级的修改的excel解决scheme,这个工作正常。
然后,我在电子表格中添加了一些VBA代码,并在这个链接之后添加了一个com-visible类(如果我尝试在chrome中打开它,但在边缘中工作则失败)。

在ThisWorkbook.cs中,我有以下代码…

using System.Runtime.InteropServices; namespace WeekendingTabsNET40 { [ComVisible(true)] public interface IWeekending { string DisplayTaggedSheets (); string DisplayDates (); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class QueryWeekending : IWeekending { private readonly WeekEnding.WeekEnding _we; public QueryWeekending () { _we = Globals.ThisWorkbook?.WeekEnding; } string IWeekending.DisplayTaggedSheets () { return _we.DisplayTaggedSheets(); } string IWeekending.DisplayDates () { return _we.DisplayDates(); } } public partial class ThisWorkbook { public WeekEnding.WeekEnding WeekEnding; private void ThisWorkbook_Startup(object sender, System.EventArgs e) { WeekEnding = new WeekEnding.WeekEnding(this, Globals.Factory); } private void ThisWorkbook_Shutdown(object sender, System.EventArgs e) { } protected override object GetAutomationObject () { return new QueryWeekending(); } #region VSTO Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InternalStartup() { this.Startup += new System.EventHandler(ThisWorkbook_Startup); this.Shutdown += new System.EventHandler(ThisWorkbook_Shutdown); } #endregion } } 

ReferenceAssemblyFromVbaProject设置为true并生成项目后,出现以下错误…

错误MSB3217:无法注册程序集“obj \ Debug \ WeekendingTabsNET40.dll”。 无法加载文件或程序集“Microsoft.VisualStudio.Tools.Office.BuildTasks,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其某个依赖项。 该系统找不到指定的文件。 (1,1)

在这里输入图像说明

这与一个升级的VS 2017 RC实例。
有人可以提出什么问题?


build立输出

 Rebuild All started ... Build started 21/02/2017 2:26:37 AM. 1>Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40.sln" on node 1 (WeekendingTabsNET40:Rebuild target(s)). 1>ValidateSolutionConfiguration: Building solution configuration "Debug|Any CPU". 1>Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40.sln" (1) is building "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40\WeekendingTabsNET40.csproj" (2) on node 1 (Rebuild target(s)). 2>Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40\WeekendingTabsNET40.csproj" (2) is building "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekEndingTabs\WeekEnding\WeekEnding.csproj" (3:3) on node 1 (default targets). 3>GenerateTargetFrameworkMonikerAttribute: Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files. CoreCompile: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /errorreport:prompt /warn:4 /define:DEBUG;TRACE /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.dll" /link:"C:\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Excel.dll" /link:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.v4.0.Utilities.dll" /link:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.v4.0.Framework.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.Tools.Applications.Runtime.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Windows.Forms.dll" /debug+ /debug:full /filealign:512 /optimize- /out:obj\Debug\WeekEnding.dll /ruleset:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /subsystemversion:6.00 /target:library /utf8output Properties\AssemblyInfo.cs WeekEnding.cs "C:\Users\Admin\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.cs" Using shared compilation with compiler from directory: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn _CopyFilesMarkedCopyLocal: Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.v4.0.Utilities.dll" to "bin\Debug\Microsoft.Office.Tools.Common.v4.0.Utilities.dll". Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.dll" to "bin\Debug\Microsoft.Office.Tools.Excel.dll". Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" to "bin\Debug\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll". Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.v4.0.Framework.dll" to "bin\Debug\Microsoft.Office.Tools.v4.0.Framework.dll". Copying file from "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.Tools.Applications.Runtime.dll" to "bin\Debug\Microsoft.VisualStudio.Tools.Applications.Runtime.dll". CopyFilesToOutputDirectory: Copying file from "obj\Debug\WeekEnding.dll" to "bin\Debug\WeekEnding.dll". WeekEnding -> C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekEndingTabs\WeekEnding\bin\Debug\WeekEnding.dll Copying file from "obj\Debug\WeekEnding.pdb" to "bin\Debug\WeekEnding.pdb". 3>Done Building Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekEndingTabs\WeekEnding\WeekEnding.csproj" (default targets). 2>CoreResGen: "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\resgen.exe" /useSourcePath /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.dll" /r:"C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\packages\Microsoft.Office.Interop.Excel.15.0.4795.1000\lib\net20\Microsoft.Office.Interop.Excel.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.v4.0.Utilities.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" /r:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.Tools.Applications.Runtime.dll" /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll" /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll" /r:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Windows.Forms.dll" /r:"C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekEndingTabs\WeekEnding\bin\Debug\WeekEnding.dll" /compile Properties\Resources.resx,obj\Debug\WeekendingTabsNET40.Properties.Resources.resources Sheet1.resx,obj\Debug\WeekendingTabsNET40.Sheet1.resources ThisWorkbook.resx,obj\Debug\WeekendingTabsNET40.QueryWeekending.resources Processing resource file "Properties\Resources.resx" into "obj\Debug\WeekendingTabsNET40.Properties.Resources.resources". Processing resource file "Sheet1.resx" into "obj\Debug\WeekendingTabsNET40.Sheet1.resources". Processing resource file "ThisWorkbook.resx" into "obj\Debug\WeekendingTabsNET40.QueryWeekending.resources". GenerateTargetFrameworkMonikerAttribute: Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files. CoreCompile: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /platform:x86 /warn:4 /define:VSTO40;DEBUG;TRACE /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.CSharp.dll" /link:"C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\packages\Microsoft.Office.Interop.Excel.15.0.4795.1000\lib\net20\Microsoft.Office.Interop.Excel.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Common.v4.0.Utilities.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.Office.Tools.Excel.v4.0.Utilities.dll" /reference:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\v4.0\Microsoft.VisualStudio.Tools.Applications.Runtime.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\mscorlib.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Core.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.dll" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.Windows.Forms.dll" /reference:"C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekEndingTabs\WeekEnding\bin\Debug\WeekEnding.dll" /debug+ /debug:full /optimize- /out:obj\Debug\WeekendingTabsNET40.dll /ruleset:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Team Tools\Static Analysis Tools\\Rule Sets\MinimumRecommendedRules.ruleset" /subsystemversion:6.00 /resource:obj\Debug\WeekendingTabsNET40.Properties.Resources.resources /resource:obj\Debug\WeekendingTabsNET40.Sheet1.resources /resource:obj\Debug\WeekendingTabsNET40.QueryWeekending.resources /target:library /utf8output Chart1.cs Chart1.Designer.cs Properties\AssemblyInfo.cs Sheet1.cs Sheet1.Designer.cs Sheet10.cs Sheet10.Designer.cs Sheet11.cs Sheet11.Designer.cs Sheet2.cs Sheet2.Designer.cs Sheet3.cs Sheet3.Designer.cs Sheet4.cs Sheet4.Designer.cs Sheet5.cs Sheet5.Designer.cs Sheet6.cs Sheet6.Designer.cs Sheet7.cs Sheet7.Designer.cs Sheet8.cs Sheet8.Designer.cs Sheet9.cs Sheet9.Designer.cs ThisWorkbook.cs ThisWorkbook.Designer.cs Properties\Resources.Designer.cs Properties\Settings.Designer.cs "C:\Users\Admin\AppData\Local\Temp\.NETFramework,Version=v4.5.AssemblyAttributes.cs" Using shared compilation with compiler from directory: C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.targets(628,9): error MSB3217: Cannot register assembly "obj\Debug\WeekendingTabsNET40.dll". Could not load file or assembly 'Microsoft.VisualStudio.Tools.Office.BuildTasks, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 2>Done Building Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40\WeekendingTabsNET40.csproj" (Rebuild target(s)) -- FAILED. 1>Done Building Project "C:\Users\Admin\Documents\Visual Studio 2017\Projects\WeekendingTabsNET40\WeekendingTabsNET40.sln" (WeekendingTabsNET40:Rebuild target(s)) -- FAILED. Build FAILED. Time Elapsed 00:00:01.59 ========== Rebuild All: 1 succeeded, 1 failed, 0 skipped ========== 

错误

错误MSB3217无法注册程序集“obj \ Debug \ WeekendingTabsNET40.dll”。 无法加载文件或程序集“Microsoft.VisualStudio.Tools.Office.BuildTasks,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a”或其某个依赖项。 该系统找不到指定的文件。 C:\ Users \ Admin \ Documents \ Visual Studio 2017 \ Projects \ WeekendingTabsNET40 \ WeekendingTabsNET40 \ WeekendingTabsNET40.csproj C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ OfficeTools \ Microsoft.VisualStudio.Tools.Office.targets 628

更新

我能够使用gacutil清除下载caching中的所有副本,但没有任何区别。

看来问题是我没有在GAC中的Microsoft.VisualStudio.Tools.Office.BuildTasks.dll。

我可以在这里看到这个文件…

C:\ Windows \ Microsoft.NET \程序集\ GAC_MSIL \ Microsoft.VisualStudio.Tools.Office.BuildTasks \ v4.0_12.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.Tools.Office.BuildTasks.dll

但它不在GAC(C:\ Windows \ assembly \ GAC_MSIL)

所以…我添加了它,当然还有它的版本12.0.0.0,所以我想我需要find一种方法来下载15.0.0.0版本。

我设法解决这个问题。
我的主要问题是了解围绕VS的散居configuration。 我需要的DLL实际上是在

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.BuildTasks.dll 

因为我已经安装了VS 2017 RC,所以这是15个DLL和MSBuild期望find的DLL。
所以,最后,我只是把这个版本的Microsoft.VisualStudio.Tools.Office.BuildTasks.dll添加到GAC中,方法是打开VS命令提示符(以admin身份)并运行

 gacutil /i C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\OfficeTools\Microsoft.VisualStudio.Tools.Office.BuildTasks.dll 

因此,除了了解configuration摩擦(在msdn docs rubic的立方体中没有正确描述)之外,我只需要认识到正确版本的VisualStudio.Tools.Office.BuildTasks.dll需要在GAC中注册。
正如@HansPassant所提到的那样,VS 2017 RC安装失败了。

除此之外,我之前没有解决问题。 我再次尝试使用gacutil注册"Microsoft.VisualStudio.Tools.Office.BuildTasks.dll". 然后使用开发人员命令提示为VS 2017作为pipe理员我做了正确的注册"Microsoft.VisualStudio.Tools.Office.BuildTasks.dll" ,并没有更多的问题,以构build“演练:从VBA调用Visual C#项目中的代码工作正常,直到暴露方法到VBA代码的步骤“。 在我的电脑中,我find了"Microsoft.VisualStudio.Tools.Office.BuildTasks.dll"

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\PrivateAssemblies\