我有一个C#解决方案(视觉工作室2017年)两个项目让说一个和乙,既编译EXE。项目A取决于项目B的exe,我虽然依赖项目B将解决此问题。但是,构建时不会自动复制exe文件。Visual Studio项目依赖于其它项目不会复制EXE
这些依赖不适用于exe的吗?是进行构建后步骤的唯一解决方案吗?
我有一个C#解决方案(视觉工作室2017年)两个项目让说一个和乙,既编译EXE。项目A取决于项目B的exe,我虽然依赖项目B将解决此问题。但是,构建时不会自动复制exe文件。Visual Studio项目依赖于其它项目不会复制EXE
这些依赖不适用于exe的吗?是进行构建后步骤的唯一解决方案吗?
我想你想有一个生成后事件。
听起来您已经设置了项目依赖关系,这很好,因为重要的是项目B在项目A之前生成并且为项目B添加项目依赖项目是项目A的方法那。
下面是添加/删除项目依赖的文件:https://msdn.microsoft.com/en-us/library/et61xzb3.aspx
在项目A,您可以添加后生成事件,将复制项目B exe文件。
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
添加对项目的引用的解决方案工作,然后我避免后构建步骤。 –
虽然添加它作为参考有其他副作用。来自一个项目的代码可以在另一个项目中访问。这可能不是问题,但它可能会稍微混淆。另一个问题是,该项目现在必须是.net项目,并且.net框架版本和类型必须兼容。因此,如果项目A是.net 4.5,那么项目B不能使用C++,也不能使用.net 4.6。再一次,这可能不适合你的情况,但值得指出。 – AndyJ
是的,你是对的,没有想到项目之间的解耦减少。他们都是一样的:网络版本,所以不是一个问题,所以我想它必须解决后建立事件,尽管我想避免这一点。 –
您可以使用生成后事件(项目属性 - >生成事件)在生成结束时复制文件。
为什么要构建两个exe文件,而不是将所需的功能放入可从两个应用程序中引用的类库中? – mason
@mason也许他想要两个单独的exe文件,因为他可能想单独运行然后按需求运行? – pitersmx
@pitersmx AFAICT,梅森的建议是仍然有两个exe文件,但有第三个dll,这两个exes引用。 – AndyJ