如何通过Visual Studio中的Pre-Build命令行更改引用dll?

How to change reference dll by Pre-Build command line in Visual Studio?

提问人:Robin Sun 提问时间:11/13/2023 更新时间:11/13/2023 访问量:55

问:

我们有一个与 Oracle 数据库连接的控制台应用程序。由于某些遗留原因,我的本地计算机和 Windows 服务器中的 Oracle 客户端版本不同。

当我在本地计算机中进行调试时,我使用版本 A。在将 exe 推送到 Windows 服务器之前,我会将项目切换到发布模式,并将引用的版本更改为来自另一个文件夹的版本 B,并构建 exe,然后将其推送到服务器。Oracle.DataAccess.dllOracle.DataAccess.dll

现在,我想使这些步骤自动进行。在发布模式下构建时,我想让 Viusal Studio 预构建命令为我更改引用的 Oracle.DataAccess.dll。有什么命令可以使用吗?或者,有没有其他方法可以做到这一点?

C# asp.net .NET 可视化工作室 -2022

评论

0赞 Dai 11/13/2023
是否有原因不能改用 OracleClient 的 NuGet 包
0赞 Robin Sun 11/13/2023
这是一个非常遗留的项目,我们的团队没有使用 Nuget。顺便说一句,如果我使用Nuget,我可以在构建之前使用命令更改引用的dll版本吗?
1赞 Dai 11/13/2023
我认为一个更好的主意是将项目拖到使用 NuGet 中,而不是试图强迫像这样丑陋的黑客工作。你也始终可以增量过渡到使用 NuGet 包。你的团队拖延的时间越长,将来就越难(也越昂贵)......(如果较新的 OracleClient 版本中有重大 API 更改,那么肯定有一个旧版本可用作 NuGet 包,无需更改代码?

答:

0赞 Joe 11/13/2023 #1

我假设DLL是托管的,是吗?

我必须为一个项目执行此操作,在该项目中,我需要两个不同版本的 DLL,一个用于调试,一个用于发布。我应该说,在构建之前,我确实设法让我的构建过程将该 DLL 的正确版本复制到我的输出目录。事实上,这就是我整个项目引用它的位置。所以我需要做的就是在 .CSPROJ 文件使用正确的宏引用我的构建输出目录。我是这样做的

  <ItemGroup>
    <Reference Include="GS.Sdk_v142">
      <HintPath>$(OutDir)\GS.Sdk_v142.dll</HintPath>
    </Reference>
  </ItemGroup>

评论

0赞 Robin Sun 11/15/2023
嗨,@Joe。这听起来是个好主意。但这会修改 .csproj 文件,我们的项目由 Git 管理,包括这个文件。我不希望我的更改影响其他开发人员。我还在想我是否可以通过某种命令到达它。