NET 4.7中找不到EntryPoint属性的替换

时间:2019-01-03 17:52:22

标签: c# .net solidworks

所以我正在尝试将solidoworks宏从.net 3.5更新为.net 4.7

当我要这样做时,我发现有一种叫做EntryPoint(0)的方法,它基本上是宏代码的起点。

添加以下代码:

using Microsoft.VisualStudio.Tools.Applications.Contract;
using Microsoft.Office.Tools.Excel;
using Microsoft.Office.Tools;
using SolidWorks;
using SolidWorks.Interop.sldworks;
using System;
using static System.Reflection.MethodInfo; 
using System.Runtime.InteropServices;
using System.AddIn.Contract.Collections; 
using System.ComponentModel;
using System.Diagnostics;
using System.Management;
using System.Runtime;
using System.Runtime.InteropServices.ComTypes;
using System.Windows.Forms;

namespace GoPublish.csproj
{
    public sealed class SolidWorksMacro : OuterDispProxy
    {
      [EntryPoint(0)]
      public SldWorks swApp;

      [DllImport("ole32.dll")]
      private static extern int CreateItemMoniker([MarshalAs(UnmanagedType.LPWStr)] string lpszDelim, [MarshalAs(UnmanagedType.LPWStr)] string lpszItem, out IMoniker ppmk);

      [DllImport("ole32.dll")]
      private static extern int GetRunningObjectTable(uint reserved, out IRunningObjectTable pprot);

我无法在.net 4.7中找到替代品

关于我该怎么做的任何建议?

1 个答案:

答案 0 :(得分:1)

Class EntryPointAttribute在Microsoft.VisualStudio.Tools.Applications.Contract.dll中定义,它是VSTA(Visual Studio应用程序工具)的一部分。我不太熟悉它,但是我了解它是用于宏/插件开发的VS的轻量级版本。

您绝对可以在没有此dll的情况下构建solidworks宏,但是有许多种构建宏的方法,因此也许通过您的特定设置您确实需要它。

我猜您一直在使用VSTA的3.5版本,并切换到Visual Studio 4.7,这就是您的实际问题。

.net 4.7完全支持以前版本的库,因此您可以尝试手动添加参考。在这里我可以找到Microsoft.VisualStudio.Tools.Applications.Contract.dll:C:\ Windows \ assembly \ GAC_MSIL \ Microsoft.VisualStudio.Tools.Applications.Contract \ 8.0.0.0__b03f5f7f11d50a3a \ Microsoft.VisualStudio.Tools.Applications .Contract.dll