2017-06-07 62 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

您可以使用生成後事件(項目屬性 - >生成事件)在生成結束時複製文件。

相關問題