C# Autocad 2018 NETLOAD未显示我的命令方法

C# Autocad 2018 NETLOAD未显示我的命令方法,c#,.net,autocad,autocad-plugin,C#,.net,Autocad,Autocad Plugin,我正在尝试使用Visual Studio 2019使用.Net为Autocad 2018制作一个插件 首先,当调试为“任意CPU”时,我在VS中收到一条警告,当我切换到x64时,错误消失。 构建项目并获得.dll文件后,我转到Autocad并使用NETLOAD命令加载它,当我尝试加载我的方法或“CommandMethod”时,它不会显示 我尝试将.Net Framework更改为从4.7.2到4.5的任何版本 尝试了其他来源的不同代码,但仍然没有结果 我应该使用更高版本的AutoCad吗?还是

我正在尝试使用Visual Studio 2019使用.Net为Autocad 2018制作一个插件 首先,当调试为“任意CPU”时,我在VS中收到一条警告,当我切换到x64时,错误消失。 构建项目并获得.dll文件后,我转到Autocad并使用NETLOAD命令加载它,当我尝试加载我的方法或“CommandMethod”时,它不会显示

  • 我尝试将.Net Framework更改为从4.7.2到4.5的任何版本
  • 尝试了其他来源的不同代码,但仍然没有结果 我应该使用更高版本的AutoCad吗?还是应该使用较低版本的VS,比如2017? 有什么问题吗? 代码如下:

    using Autodesk.AutoCAD.ApplicationServices;
    using Autodesk.AutoCAD.DatabaseServices;
    using Autodesk.AutoCAD.Geometry;
    using Autodesk.AutoCAD.EditorInput;
    using Autodesk.AutoCAD.Runtime;
    using Autodesk.AutoCAD.ApplicationServices.Core;
    
    [assembly: CommandClass(typeof(Testing.Class1))]
       namespace Testing
    {
        public class Class1
        {
            [CommandMethod("MyFirstCommand")]
            public void my()
            {
    
            Document doc=Application.DocumentManager.MdiActiveDocument;
            Database db = doc.Database;
            Editor edt = doc.Editor;
    
            using (Transaction trans=db.TransactionManager.StartTransaction())
            {
                try
                {
    
                    BlockTable bt;
                    bt = trans.GetObject(db.BlockTableId, OpenMode.ForRead) as BlockTable;
                    BlockTableRecord btr;
                    btr = trans.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;
    
                    // send message to the user
                    edt.WriteMessage("\nDrawing a line objet");
    
                    Point3d pt1 = new Point3d(0, 0, 0);
                    Point3d pt2 = new Point3d(100, 0, 0);
    
                    Line ln = new Line(pt1, pt2);
                    ln.ColorIndex = 1;
                    btr.AppendEntity(ln);
                    trans.AddNewlyCreatedDBObject(ln, true);
                    trans.Commit();
                }
                catch (System.Exception e)
                {
                    edt.WriteMessage("Error Encountered" + e.Message);
                    trans.Abort();
                }
            }
            edt.WriteMessage("Script loaded");
    
        }
    
    }
    
    }


定义
[CommandMethod(“Command\u Name”)]
的类必须是
公共的
定义
[CommandMethod(“Command\u Name”)]
的类必须是
公共的检查参考资料。我曾经有过这样的问题,当我有一个坏的或不正确的参考

AutoCAD参照的任何设置是否与下图中的设置不同


检查你的推荐信。我曾经有过这样的问题,当我有一个坏的或不正确的参考

AutoCAD参照的任何设置是否与下图中的设置不同

瓦塞姆写道:


通过添加名为“inc”的ObjecrARX文件夹中的dll文件解决了此问题。我有旧版本的dll文件,它们与AutoCad 2018不兼容,谢谢WASEEMEE 2月18日22:38

由于我无法添加任何评论,我将添加此作为答案

您应该通过内置在VisualStudio中的NuGet packages功能添加引用。这将解决与此相关的任何未来问题

怎么做-→ tldr:右键单击您的项目,单击管理NuGet软件包,单击“浏览”选项卡,然后搜索AutoCAD API软件包,使用右侧的UI安装它们

AutoCAD NuGet在网络上的位置是什么-→

瓦塞姆写道:


通过添加名为“inc”的ObjecrARX文件夹中的dll文件解决了此问题。我有旧版本的dll文件,它们与AutoCad 2018不兼容,谢谢WASEEMEE 2月18日22:38

由于我无法添加任何评论,我将添加此作为答案

您应该通过内置在VisualStudio中的NuGet packages功能添加引用。这将解决与此相关的任何未来问题

怎么做-→ tldr:右键单击您的项目,单击管理NuGet软件包,单击“浏览”选项卡,然后搜索AutoCAD API软件包,使用右侧的UI安装它们


AutoCAD NuGet在网络上的位置是什么-→

是否有其他正在加载的AutoCAD.NET应用程序?您是否有可能有另一个同名命令导致错误?另外,对该名称使用
my()
是否会导致问题?我检查了引用,输入的内容与您的图片相同。然而,我的版本显然比你的版本有点旧。我有18.1.0.1。另外,我不认为函数名是问题所在,我多次更改了它,但仍然是同一个问题。通过从名为“inc”的ObjecrARX文件夹添加dll文件,我得到了dll文件的旧版本,它们与AutoCad 2018不兼容,谢谢!很高兴能为您提供帮助。您还有其他正在加载的AutoCAD.NET应用程序吗?您是否有可能有另一个同名命令导致错误?另外,对该名称使用
my()
是否会导致问题?我检查了引用,输入的内容与您的图片相同。然而,我的版本显然比你的版本有点旧。我有18.1.0.1。另外,我不认为函数名是问题所在,我多次更改了它,但仍然是同一个问题。通过从名为“inc”的ObjecrARX文件夹添加dll文件,我得到了dll文件的旧版本,它们与AutoCad 2018不兼容,谢谢!很高兴我能帮忙。