2

我在我的 nuspec 的 tools 文件夹中添加了一个构建 EXE 工具,它已正确添加到\packages\xxx\tools文件夹下的目标应用程序中。

但我需要在目标项目中将此文件作为构建操作调用。引用它的正确方法是什么?请记住,对于每个新版本的包,\packages\ 中的文件夹名称都会更改。所以我不能硬编码。

4

1 回答 1

0

就我而言,我遇到了这种情况:

  • 目标项目是一个 .NET Core 应用程序。
  • EXE 文件不是 .NET Core,必须保留为 EXE

我发明了一种解决方法:

  1. 创建了一个控制台应用程序 DLL 项目(.NET 核心)并将 EXE 文件作为嵌入式资源添加到其中。
  2. 为新的 DLL 文件创建了一个普通的 NuGet 包。
  3. 在目标应用程序中,我引用了这个包 (dll),因此所有未来的版本都会以正常的 NuGet 方式更新。
  4. 在目标应用程序中,我添加了一个构建后事件来运行 dll 文件:

    dotnet TheDllName.dll

    以正常方式打包DLL文件并在目标应用程序中引用。在其中以正常方式发送。每次更新 NuGet 包时,新的 EXE 也会分布在 DLL 中。然后我用了一个命令

DLL 运行时会发生什么?

  1. 像任何其他嵌入式资源一样,从自身读取 EXE 文件。
  2. 将其作为 EXE 文件保存在磁盘上。
  3. 启动一个新进程来运行 EXE 文件。

优化

这不是绝对必要的,但为了优化上述过程,我还添加了一个版本文件(名为ver.txt的简单txt文件)来记录EXE文件的版本号,因此每个更新的NuGet包我只提取并保存一次.

于 2018-03-12T08:53:06.177 回答