我有一個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