【问题标题】:Error copying files from one project to another将文件从一个项目复制到另一个项目时出错
【发布时间】:2015-08-28 00:37:16
【问题描述】:

我在 C++ 中创建了一个 *.dll 文件以用于 C# 程序。本机 DLL 驻留在我的托管 DLL 包装器中。从那里,我将我的本地 DLL(用于调试和发布的 NativeDll.dll)物理复制到我的 C# 控制台应用程序的调试和发布文件夹中。当我运行 C# 程序时,它会按预期运行,创建对象并显示值。

当我更改本机库 (C++) 中变量的默认值时,问题就出现了。当我再次运行程序时,对变量的更改(框的 with)仍然保留最后一个值。根据我的搜索,我发现我可以通过这种方式在项目的构建事件/构建后事件命令行中将 dll 从一个项目复制到我的 C# 项目中:

copy "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
      "$(SolutionDir)TestDLLConsole\bin\$(Configuration)"

当我再次运行该程序时,我收到一条错误消息,指出 “退出,代码为 9009。” 解决此问题的唯一方法是手动重新复制我的 NativeDll.dll 文件,并在我进行更改时覆盖现有的文件。

我的解决方案中的 4 个项目是下一个版本,具体取决于上一个:

  • NativeLib(静态库)
  • NativeDll
  • ManagedDll
  • TestDLLConsole(我在这里测试 dll 是否工作)。

如何将 Dll 复制到/覆盖每个编译的 TestDLLConsole?

【问题讨论】:

  • 您永远不应该将 dll 从一个项目复制到另一个项目。您失去了调试功能,因为 dll 不再连接到源数据。相反,当从解决方案资源管理器将一个项目添加到另一个时:添加现有项目,然后浏览到 dll 所在的位置。
  • @jdweng 是的,我明白这一点。我必须首先这样做,以确保项目有效。以上所有项目都是在一个解决方案中创建的。我想要实现的是每次程序重新编译时这些文件都会被覆盖。

标签: c# c++ .net dll


【解决方案1】:

也许您正试图用最后一个构建后事件覆盖您复制的最后一个 dll。你可以试试:

copy /Y "$(SolutionDir)ManagedDll\bin\$(Configuration)\NativeDll.dll"
  "$(SolutionDir)TestDLLConsole\bin\$(Configuration)"

/Y 参数禁止提示您确认是否要覆盖现有目标文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 2021-11-22
    • 2012-01-13
    • 2020-08-31
    • 2018-03-24
    • 2017-12-16
    相关资源
    最近更新 更多