2017-06-07 92 views
-1

我有一个C#解决方案(视觉工作室2017年)两个项目让说一个,既编译EXE。项目A取决于项目B的exe,我虽然依赖项目B将解决此问题。但是,构建时不会自动复制exe文件。Visual Studio项目依赖于其它项目不会复制EXE

这些依赖不适用于exe的吗?是进行构建后步骤的唯一解决方案吗?

+2

为什么要构建两个exe文件,而不是将所需的功能放入可从两个应用程序中引用的类库中? – mason

+0

@mason也许他想要两个单独的exe文件,因为他可能想单独运行然后按需求运行? – pitersmx

+0

@pitersmx AFAICT,梅森的建议是仍然有两个exe文件,但有第三个dll,这两个exes引用。 – AndyJ

回答

1

我想你想有一个生成后事件。

听起来您已经设置了项目依赖关系,这很好,因为重要的是项目B在项目A之前生成并且为项目B添加项目依赖项目是项目A的方法那。

下面是添加/删除项目依赖的文件:https://msdn.microsoft.com/en-us/library/et61xzb3.aspx

在项目A,您可以添加后生成事件,将复制项目B exe文件。

  1. 右键单击项目A,然后选择“属性”。
  2. 更改为“构建事件”选项卡。
  3. 添加命令:copy "FromPath" "ToPath"

copy命令的文档是在这里:https://technet.microsoft.com/en-gb/library/bb490886.aspx?f=255&MSPPError=-2147217396

如果点击“编辑生成后”,你会得到一个小编辑器,有一个按钮标记为“宏”。

如果你点击“宏”按钮,那么它将允许你插入格式为$(foo)的替换字符串。

这些宏允许您获取项目或解决方案文件夹等内容,因此您可以轻松构建指向正确位置的路径。

下面是关于构建事件的一些文件:https://docs.microsoft.com/en-us/visualstudio/ide/how-to-specify-build-events-csharp

这里的生成事件属性页上一些(糟糕的)文档:https://docs.microsoft.com/en-us/visualstudio/ide/reference/build-events-page-project-designer-csharp

下面是对宏一些(有用的)文件:https://msdn.microsoft.com/en-us/library/c02as0cs.aspx

+0

添加对项目的引用的解决方案工作,然后我避免后构建步骤。 –

+1

虽然添加它作为参考有其他副作用。来自一个项目的代码可以在另一个项目中访问。这可能不是问题,但它可能会稍微混淆。另一个问题是,该项目现在必须是.net项目,并且.net框架版本和类型必须兼容。因此,如果项目A是.net 4.5,那么项目B不能使用C++,也不能使用.net 4.6。再一次,这可能不适合你的情况,但值得指出。 – AndyJ

+0

是的,你是对的,没有想到项目之间的解耦减少。他们都是一样的:网络版本,所以不是一个问题,所以我想它必须解决后建立事件,尽管我想避免这一点。 –

2

看看你的依赖关系的属性并为你的exe设置“Local Copy”,这应该将exe复制到你的A.exe的bin文件夹中。

编辑: 这是德国版本,但应该是这样的:

Dependency Properies

+0

这不是一个参考,它是项目之间解决方案中的依赖关系。我想说的是,我无法在解决方案级别依赖关系中找到该属性。 –

+0

增加了一张图片来澄清:) –

+0

啊哈,我没有想过引用这个项目,我只设置了依赖项,这解决了它。谢谢。 –

0

您可以使用生成后事件(项目属性 - >生成事件)在生成结束时复制文件。

相关问题