C# 命令";esriRegasm.exe…“;已退出,代码为-1。我能';我们不能建立一个项目
我想在VisualStudio中构建一个使用ArcObjects创建工具的项目。我得到这个错误:C# 命令";esriRegasm.exe…“;已退出,代码为-1。我能';我们不能建立一个项目,c#,visual-studio-2015,arcmap,arcobjects,C#,Visual Studio 2015,Arcmap,Arcobjects,我想在VisualStudio中构建一个使用ArcObjects创建工具的项目。我得到这个错误: The command "esriRegasm.exe "...Project1.dll" /p:Desktop /s" exited with code -1. 我使用C#,Visual Studio 2015,ArcObjects 10.5,ArcMap 10.5 我看了过去的问题,也犯了同样的错误() 我试图这样解决问题: 试图以“管理员”而不仅仅是
The command "esriRegasm.exe "...Project1.dll" /p:Desktop /s" exited with code -1.
我使用C#,Visual Studio 2015,ArcObjects 10.5,ArcMap 10.5
我看了过去的问题,也犯了同样的错误()
我试图这样解决问题:
- 试图以“管理员”而不仅仅是用户的身份打开解决方案李>
- 从命令行运行
命令。我试了两种方法。第一个是Visual Studio()中的错误,第二个是根据help.arcgis网站上的说明。();李>esrregasm.exe
- 试图打开.csproj文件,转到该文件的结尾,找到行
,删除它并重建项目esrregasm.exe
所有这些都不起作用。如何构建项目?esriregasm工具用于注册您自己的命令、工具或扩展,以便在ArcGIS中使用。它通常在csproj文件末尾定义为msbuild任务,如下所示:
<Target Name="BeforeClean" Condition=" '$(NO_ESRI_REGASM)' == '' ">
<Exec WorkingDirectory="$(CommonProgramFiles)\ArcGIS\bin" Command="esriRegasm.exe "$(TargetPath)" /p:Desktop /u /s" Condition="Exists('$(TargetPath)')" />
</Target>
<Target Name="AfterBuild" Condition=" '$(NO_ESRI_REGASM)' == '' ">
<Exec WorkingDirectory="$(CommonProgramFiles)\ArcGIS\bin" Command="esriRegasm.exe "$(TargetPath)" /p:Desktop /s" />
</Target>
请注意,我省略了/s
-标志是为了获得更多的平均错误。您还可以附加/e
-开关以获得更详细的错误,这与我的经验不太相符
现在查看ECFG文件所在的文件夹。这通常是%CommnonProgramFiles%\ArcGIS\Desktop\Configuration\CATID
。确保有一个文件包含程序集的名称和扩展名ecgf
(它在开始时可能还有一些GUID,例如{6d102248-13e2-40a0-8011-378543f63901}\u MyAssembly.ecfg
)。这只是一些zip文件,您还可以解压缩它并找到一个包含命令和工具guid的xml文件。如果按照前面提到的步骤注册程序集不起作用,您可以删除该ecfg文件并重新构建(!!)您的程序集。然后验证该文件是否已在该文件夹中创建
如果这仍然不起作用,只需将编译的程序集连同最终存在的ecfg文件一起删除,然后重新构建。我经常会遇到这个错误,但从未真正解决它。通常我只是删除csproj文件中的
BeforeClean
-和AfterBuild
-目标,调用通常在这里定义。但是,我建议转到gis.stackexchange
,询问与ArcGIS相关的问题。当您右键单击程序集并选择“注册”时,会发生什么情况?错误报告太蹩脚,无法告诉您出了什么问题。您需要知道InnerException,但它不会告诉您。使用“项目>属性>调试”选项卡进行调试,选择“启动外部程序”并键入命令。接下来使用调试>窗口>异常设置并勾选CLR异常。按F5键,调试器应在代码中导致异常的语句处停止。通常是一个静态变量的初始化会停止。@HansPassant在“启动外部程序”字段中,我有到ArcMap.exe的路径。我需要换吗?我选择了所有“CLR例外”。@HimBromBeere我不知道我需要在哪里按下右键并找到“注册”。我是一名初学者,感谢您的理解。当我尝试使用命令行注册程序集时,出现错误无法加载文件或程序集“file://…/Project1/bin/Debug”或其依赖项之一。拒绝访问。
但我正在以“管理员”的身份使用命令行。我试图使用net用户管理员/active:yes
命令进入Windows。仍然拒绝访问。“…ArcGIS\Desktop10.5\bin\Configuration\CATID”的位置与我的生成无关。只有esri.catid.ecfg。我删除了esri.catid.ecfg文件和程序集文件并重新生成项目,然后出现错误无法注册程序集“…\Project1\bin\Debug\Project1.dll”。调用的目标抛出了异常。
woe,这比我从工具中得到的更具描述性。无论如何,ecfg文件不包含在ArcGIS的程序文件夹中,而是包含在%CommonProgramFiles%/ArcGIS
中,这对我来说是C:/ProgramFiles(x86)/CommonFiles/ArcGIS
。CATID文件夹仅位于C:\program files(x86)\ArcGIS\Desktop10.5\bin\Configuration
位置。我没有位置“C:/ProgramFiles(x86)/CommonFiles\ArcGIS\Desktop 10.5\Configuration\CATID”。文件夹C:/Program Files(x86)/CommonFiles\ArcGIS\Desktop 10.5
包含bin、帮助、支持、第三方子文件夹,仅此而已。
%CommonProgramFiles%\ArcGIS\bin\esriregasm /p:Desktop /u
%CommonProgramFiles%\ArcGIS\bin\esriregasm /p:Desktop