【问题标题】:How to compile a program into different projects in C#如何在 C# 中将程序编译到不同的项目中
【发布时间】:2016-12-17 17:45:36
【问题描述】:

让我们说:我有一个项目,这个项目使用了一个引用(office2016.dll)。 在我的项目中,我有一个 c# 类可以访问这些引用并且工作正常。

现在我想编译相同的代码,但这次使用不同的引用(office2012.dll)。 请注意,(office2016.dll 和 office2012.dll)共享我在 c# 代码中使用的相同方法和类型。 但我想为每种产品发布不同的(EXE)。一个用于 Office 2016,另一个用于 Office 2012。

是否可以在不同的引用(dll)上编译相同的 c# 代码?

一种解决方案是将我的 c# 代码复制到一个新项目中,然后添加另一个 (office2012.dll),然后再次重新编译,它可以正常工作,但我不想手动执行此操作,因为我每天都在工作这需要很多努力和专注,当然还有额外的时间,因为我真的不相信复制/粘贴代码,这实际上是一项乏味的工作!

【问题讨论】:

  • 您可以使用带有文件链接的hack。创建两个项目:一个包含实际代码和对 office2016.dll 的引用。但是第二个只有第一个项目中的文件的链接,并引用了 office2012.dll。要创建链接,您需要使用按下 Alt 按钮从第一个项目中拖动文件。
  • 如何给项目添加链接,我试过了但是没有办法添加链接
  • 您可以按下 Alt 按钮从第一个项目中拖动。或使用添加现有项目。添加按钮具有允许选择添加为链接的下拉菜单
  • 我添加了我的 c# 类,但是有一个编译错误,它无法访问代码中的引用。因为正如我在我的 c# 类中所说,我使用了对 office2016.dll 的引用,并且通过将 c# 类添加到另一个新项目中,它无法访问旧项目引用
  • 1.第二个项目应该与第一个项目具有相同的引用,但 office2016.dll。如果这不起作用,则 office2016.dll 和 office2012.dll 中的类位于不同的命名空间中。解决方法:条件编译。

标签: c# .net visual-studio compilation


【解决方案1】:

您可以在同一文件夹中创建项目文件(.csproj)的副本,然后将复制的项目包含在您的解决方案中。然后,您可以为每个项目选择正确的参考。确保转到项目属性并为每个项目选择自定义程序集名称和/或输出文件夹(即myoffice2012app.exe 和/或bin/Release2012)。

您添加的任何代码文件之后都必须包含在每个副本中,但通过选择“显示所有文件”可以简化:

右键单击新文件并选择“包含在项目中” - 但除了必须将每个 代码文件分别添加到每个项目之外,您还可以根据需要随时构建解决方案,而无需进一步需要的步骤。

【讨论】:

  • 我不喜欢使用任何代码副本。这不是一个具体的机制,正如我上面解释的那样,它不够高效!
  • 您不复制代码 - 您复制项目文件,并在每个项目中包含相同的代码文件。您键入的每一行代码将同时出现在所有项目文件中,您可以一次编译。
猜你喜欢
  • 1970-01-01
  • 2012-12-05
  • 2015-07-07
  • 2013-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-06
  • 2014-01-08
相关资源
最近更新 更多