ArcGIS AddIN开发异常之--修饰符“static”对该项无效

修饰符“static”对该项无效,

修饰符“internal”对该项无效.

该异常弹出的位置为Config.Designer.CS文件中相关插件的声明附近

internal static string Water_Info_Toolbar.AttributeBrushTool.AttributeBrushTool {   get { return "[email protected]_Water_Info_Toolbar_AttributeBrushTool"; } }

类似的语句中,存在多处的这种修饰符无效的异常。这个文件为通过向导式新建插件时自动生成的,没有修改过。之前一直调试通过的,最近由于新建了一个工具,不知道出了什么问题,出现这个异常。

该异常不是所有的类似的语句都出现,部分比较短名称的语句就无此异常。如

internal static string SplitByAttribute {
                get {
                    return "[email protected]_Water_Info_Toolbar_SplitByAttribute";
                }
            }

说明:由于工具分多次写的,之后做了一个工具条将所有的插件、代码放在了一个解决方案中,解决方案中包含一个AddIN的项目,一个辅助类的项目。如图:

简单的功能就直接在项目中建立,如ChangePolygon2Word.cs插件(该类较复杂,大部分内容在WaterInfoAssiter项目中做了封装,此处只调用即可),其他较复杂涉及较多内容的,则新建了一个文件夹,将相关的代码、窗体等放在一个统一的文件夹中。

经过对比发现,此处出现异常的,全部是放入文件夹中的插件,这些插件之前都有正常的运行过,原因未知。

解决方法:改名。

(1)将Config.Designer.CS文件中较长的名称改为短的,如AttributeBrushTool,

之前的名称Water_Info_Toolbar.AttributeBrushTool.AttributeBrushTool,

Water_Info_Toolbar为项目名称,
AttributeBrushTool为文件夹名称。以上较长的名称为VS根据插件存放的位置生成,新建插件名称时,只在向导中输入了AttributeBrushTool

(2)修改具体Config.esriaddinx 文件中关于插件的配置,将class改为短名称,Water_Info_Toolbar.AttributeBrushTool.AttributeBrushTool改为AttributeBrushTool,此处应该是指向具体实现后台逻辑的类

<Tool id="[email protected]_Water_Info_Toolbar_AttributeBrushTool" class="AttributeBrushTool" message="" caption="属性刷" tip="属性刷.Ctrl+左键,选择用以刷属性的源,选择之后可以在右侧的表中修改值.之后,点击希望刷属性的要素" category="Water_Info_Controls_llc" image="Images\AttributeBrushTool.png" cursor="Images\AttributeBrushTool.cur" />

(3)修改AttributeBrushTool.cs文件中Water_Info_Toolbar.AttributeBrushTool的命名空间,只保留Water_Info_Toolbar。保存即可

按照上述内容修改,异常可消除。

插件中包含一些窗体与panel时,也按照上述步骤修改。只不过需要多修改panel.designer.cs中相关的代码。

以上做法可以解决异常,原因未知,有知道的高手麻烦告知一下

时间: 2024-10-09 18:56:07

ArcGIS AddIN开发异常之--修饰符“static”对该项无效的相关文章

C# 修饰符“static”对该项无效

类方法的局部变量添加static关键字,再编译时 C# 编译器会报告以下错误:error CS0106: 修饰符"static"对该项无效 C# 语言不允许使用 static 修饰符来声明方法内部的变量.但是在 C/C++ 语言中是允许这么做的. 因此只能只能在类中定义一个静态变量成员,然后提供给类方法调用

ArcGIS AddIN开发异常之--“ValidateAddInXMLTask”任务意外失败

ArcGIS AddIN开发时,产生如下异常错误 2 “ValidateAddInXMLTask”任务意外失败.System.NullReferenceException: 未将对象引用设置到对象的实例.   在 ESRI.ArcGIS.AddIns.SDK.ProjectItemExtensions.ReadAllText(ProjectItem pi)   在 ESRI.ArcGIS.AddIns.SDK.ConfigurationXML.GetContent()   在 ESRI.ArcG

ArcGIS AddIn开发笔记(一)

学习AddIn开发,遇到了些稀奇古怪的问题,网上的资料少之又少. (1)AddIn开发,主要是通过ArcMap静态变量,与主程序中的数据等进行交互 (2)failed to register Add In .esriAddIn异常,此类异常为Visual Studio中项目名称或者类名称中出现了中文名 (3)AddIn个人觉得很不稳定,第一次写完一个Tool,在其MouseDown事件中写完了相应的代码,设置断点,结果每次都不断,也不执行,无奈的很.下载了几个网上的程序,设置了断点就断了,我重新

访问修饰符与可选修饰符static的使用

在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用. 一.访问修饰符:这是Java里用来控制访问类及类的方法.变量的访问权限,从而达到只暴露接口,来隐藏内部实现的细节,访问控制符分4种级别(仅仅适用于类及类的成员修饰  private.默认.protected.public),接下来用一个表的形式简要介绍它们的选用:      本 类 同 包 不同包 子 类 非 子 类 子 类 非 子 类 private √ × × × × 默认 √ √ √ × ×

Java修饰符------&gt;static、native和final以及super和this关键字

修饰符修饰符的作用是让被修饰的内容具备特定的功能,在程序中合理使用修饰符可以在语法和功能上实现很多需要的效果.Java 语言中的修饰符主要有 5个:static.final.native.abstract 和 synchronized.这里首先讲解 static.final 和 native 的作用. static 修饰符static 关键字的中文意思是静态的,该修饰符可以修饰成员变量,成员常量和成员方法.使用该关键字修饰的内容,在面向对象中 static 修饰的内容是隶属于类,而不是直接隶属于

静态修饰符static,类中的常量定义修饰符

static可以用来区分成员变量.方法是属于类本身还是属于类实例化后的对象.有static修饰的成员属于类本身,没有static修饰的成员属于类的实例. 静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失static是一个修饰符,用于修饰成员(成员变量和成员函数)静态成员随着类的加载而加载.静态成员优先于对象存在.静态成员被所有对象所共享静态成员多了一个中调用方式,可以被类名直接调用.静态的优缺点优点: 静态成员多了一种调用方式.可以直接被类名调用 格式 :类名.静态成员.也

java静态修饰符static的使用

class Person { private String name; private int age; /* * 假设每个Person对象的国籍都一样, * 那么每次调用都要赋值就会不合理. * 使用static修饰,国籍优先确立, * 每个对象建立时,都默认赋予了该国籍. */ static String country = "China"; Person (String name,int age) { this.name = name; this.age = age; } pub

Java从入门到放弃——05.修饰符static,final,权限修饰符

本文目标 static final: 权限修饰符:public,private,protected,缺省 1.static 静态修饰符,被static修饰的变量或者方法会被加载进静态区内存,不需要创建对象就可以调用此方法或变量 2.final: final修饰类不能被继承,修饰方法不能被重写,修饰变量不能被改变且必须初始赋值 3.权限修饰符: public: 可以被任意调用 private:可以被本包或者不同包的子类调用 protected:只能被本类调用 缺省:只能本包调用 原文地址:http

objectiveC【语法】修饰符 static extern const

转自http://blog.csdn.net/xpwang168/article/details/8087143 const const最好理解,修饰的东西不能被修改 指针类型根据位置的不同可以理解成3种情况: I 常量指针 // 初始化之后不能赋值,指向的对象可以是任意对象,对象可变. NSString * const pt1; II 指向常量的指针 // 初始化之后可以赋值,即指向别的常量,指针本身的值可以修改,指向的值不能修改 const NSString * pt2; III 指向常量的