【问题标题】:Copy third party dependencies on build // Post-build events not working // Any alternatives?在构建上复制第三方依赖项 // 构建后事件不起作用 // 任何替代方案?
【发布时间】:2017-06-14 07:22:11
【问题描述】:

我有一个依赖第三方 API 的 .NET 解决方案。 API 似乎主要是一个依赖于其他文件(sqlite、dll、许可证等)的接口。在我的许多项目中都使用了第三方类,并且似乎必须与我的最终可执行文件位于同一位置。

第三方目录大致如下:

RootDirectory
     File1.dll
     File2.dll
     Subdirectory
          FileA
          Subsubdirectory
               FileB
               FileC
               etc.

在构建时,应用程序必须如下所示,否则 API 将不起作用:

MyApp.exe
ThirdPartyAPI.dll
File1.dll
File2.dll
Subdirectory
     FileA
     Subsubdirectory
          FileB
          FileC
          etc.

我想在名为 [SolutionDir]\RootDirectory 的位置保持相关文件结构完整,并让它们根据需要简单地复制到我的构建中。我似乎遇到的问题是编译时无法从 RootDirectory 复制文件。如果我尝试删除我的 bin,它会说 File1 和 File2 正在使用中,所以我假设这是暂停。

我尝试使用此构建后事件: xcopy "$(SolutionDir)RootDirectory\" "$(TargetDir)" /s /e /h 它有时会工作,有时会因代码 2 而失败......而且还没有弄清楚为什么。

有什么想法或其他想法吗?

【问题讨论】:

  • 是的,我已经阅读并尝试过这个和其他几个选项。它似乎没有帮助。我还要提到我并没有死心塌地使用 xcopy/build 事件。这似乎是有道理的。

标签: c# .net dll deployment xcopy


【解决方案1】:

在 Visual Studio 中,您可以将解决方案文件链接到项目。
只需将您的第 3 方文件添加为解决方案文件,然后按住 ALT 键将它们拖到构建最终可执行文件的项目中并删除它们。如果操作正确,这些文件将有一个蓝色的小图标。
最后,将它们的“复制到输出目录”属性更改为“如果较新则复制”。

当您构建项目时,这些文件将被复制到输出目录。

【讨论】:

  • 我会试一试,但如果我没记错的话,你一次只能做一个文件。除了公司几乎每周都会发布更新,而且要包含的文件并不一致,这将奏效。我只知道目录名称,子目录和文件可以随每个版本更改。
  • 在这种情况下,xcopy 仍然是最好的解决方案。但我可以建议你看看这个话题吗? stackoverflow.com/questions/7835304/…
猜你喜欢
  • 2016-03-24
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-16
  • 2018-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多