2017-07-07 41 views
0

對於我的工作,我必須在powershell腳本中定義一個預生成事件,該腳本將添加到我安裝NuGet包的目標項目中。腳本安裝罰款的第一次,被添加的正確方法是這樣的預生成事件:如何獲取Project Pre Build Event屬性的文字字符串值

xcopy $(SolutionDir)Some\Path $(ProjectDir)Some\Other\Path 

當我卸載並重新安裝我的NuGet包,現有的預建立從目標項目被請求的事件。問題是,當預構建事件中使用像$(ProjectDir)或$(SolutionDir)這樣的環境變量時,我的powershell腳本將獲取與該變量關聯的值。像這樣:

c:\Path\To\Solution\Dir 

或:

C:\Path\To\Project\Dir 

但我想它給我與它的ENV變量的字符串。 如何從PowerShell中的預生成事件中獲取字面值?

更新::

我做了一些更多的研究,並得出結論認爲,在構建活動中的環境變量不會被替換,除非它是一個Windows安裝程序項目。

回答

0

如何獲得項目預的字符串值生成事件性質

AFAIK,你不能得到項目預字符串值生成事件屬性。因爲宏由Preprocessor擴展,甚至在編譯代碼之前發生。這是純粹的文本替代。

+0

是否有另一種方法可以設置項目的預構建事件,並且當其他人擁有我的代碼時,他仍然可以使用相同的預構建事件來構建項目? – iPhantomGuy

+0

@iPhantomGuy,這個問題的關鍵不在於您可以設置項目的預構建事件,因爲您在構建事件中使用環境變量「$(ProjectDir)」,「$(SolutionDir)」,但是,那些變量被認爲是構建事件中宏的默認變量名稱。因此,要解決此問題,您應該使用另一個ID更改這些環境變量,例如「$(PathForProjectDir)」。 –

+0

我在哪裏定義那個變量呢?如果其他人安裝我的軟件包,然後嘗試構建它而不做其他任何事情,它會繼續工作嗎? – iPhantomGuy

相關問題