如何解决命令“ 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 Studio(picture 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 "$(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>
当我几乎每次重新构建解决方案时都遇到这种错误时,我就制定了一些应对策略。
首先,您可以再次构建项目。因为这将不会调用上述目标-仅在“ 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 举报,一经查实,本站将立刻删除。