微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

命令“ esriRegasm.exe ...”以代码-1退出我无法建立专案

如何解决命令“ esriRegasm.exe ...”以代码-1退出我无法建立专案

我想在Visual Studio中构建项目以使用ArcObjects创建工具。我收到此错误

The command "esriRegasm.exe "...Project1.dll" /p:Desktop /s" exited with code -1.

我使用C#,Visual Studio 2015,ArcObjects 10.5,ArcMap 10.5。

我看了过去的错误External tool (esriRegasm.exe) fails during build. Where in my VS project is it executed?)。

我试图解决这样的问题:

  • 试图以“管理员”身份打开解决方案,而不仅仅是用户
  • 从命令行运行esriRegAsm.exe命令。我尝试了两种方式。第一个是Visual Studiopicture 1)中的错误,第二个是根据help.arcgis网站上的说明。 (picture 2);
  • 试图打开.csproj文件,转到文件末尾,找到第esriRegAsm.exe行,将其删除并重建项目。

这些都不起作用。如何建立一个项目?

解决方法

esriregasm-工具用于注册您自己的命令,工具或扩展,以在ArcGIS中使用。通常,它在csproj文件的末尾定义为msbuild-task,如下所示:

<Target Name="BeforeClean" Condition=" '$(NO_ESRI_REGASM)' == '' ">
  <Exec WorkingDirectory="$(CommonProgramFiles)\ArcGIS\bin" Command="esriRegasm.exe &quot;$(TargetPath)&quot; /p:Desktop /u /s" Condition="Exists('$(TargetPath)')" />
</Target>
<Target Name="AfterBuild" Condition=" '$(NO_ESRI_REGASM)' == '' ">
  <Exec WorkingDirectory="$(CommonProgramFiles)\ArcGIS\bin" Command="esriRegasm.exe &quot;$(TargetPath)&quot; /p:Desktop /s" />
</Target>

当我几乎每重新构建解决方案时都遇到这种错误时,我就制定了一些应对策略。

首先,您可以再次构建项目。因为这将不会调用上述目标-仅在“ Clean”或“ Rebuild”上,而不在“ Build”上-不执行注册。但是,您的程序集已创建。您仍然可以在编译后对其进行注册,方法是右键单击dll文件并选择“注册”,或者在命令行中调用以下命令:

%CommonProgramFiles%\ArcGIS\bin\esriregasm /p:Desktop /u
%CommonProgramFiles%\ArcGIS\bin\esriregasm /p:Desktop

请注意,为了获得更多有意义的错误,我省略了/s标志。您还可以附加/e开关以获取更多详细错误-根据我的经验,这并不是很多。

现在查看ECFG文件所在的文件夹。通常是%CommnonProgramFiles%\ArcGIS\Desktop<version>\Configuration\CATID。确保存在一个带有程序集名称和扩展名ecgf的文件(文件开头可能还带有一些GUID,例如{6d102248-13e2-40a0-8011-378543f63901}_MyAssembly.ecfg)。这只是一些zip归档文件,您也可以将其解压缩并找到一个包含命令和工具的GUID的xml文件。如果注册程序集不符合上述步骤,则只需删除该ecfg文件并重新生成(!!)程序集即可。然后确认文件是在该文件夹中创建的。

如果仍然不起作用,只需删除编译后的程序集以及最终存在的ecfg文件,然后再次重新构建即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。