2013-12-16 32 views
0

我運行:
的Windows 8的x64
的Visual Studio 2013
SLIK顛覆'SVN' 不被識別爲一個內部或外部命令 - Visual Studio的輸出

在我的csproj文件,我有以下至構建

<Target Name="BeforeBuild">
<Exec ContinueOnError="true" Command="svn co --trust-server-cert --non-interactive --username MY_USERNAME --password MY_PASSWORD https://MY_SVN_REPOSITORY $(MSBuildProjectDirectory)\SUB_DIRECTORY" />
</Target>

之前,從SVN倉庫拉在輸出窗口,我得到:

'svn' is not recognized as an internal or external command, operable program or batch file.

爲什麼我可以從命令提示符而不是Visual Studio成功運行此命令?

svn co --trust-server-cert --non-interactive --username MY_USERNAME --password MY_PASSWORD https://MY_SVN_REPOSITORY $(MSBuildProjectDirectory)\SUB_DIRECTORY

回答

2

嘗試使用「CMD/C」前綴的命令,包括到SVN的完整路徑,或確保SVN的位置的某處出現在您%路徑%環境變量。

如果這是一個共同的位置,其硬編碼到在Exec任務中引用的屬性:

<Target Name="BeforeBuild"> 
<PropertyGroup> 
    <SvnDir>c:\programfiles\svn\</SvnDir> 
</PropertyGroup> 
<Exec ContinueOnError="true" Command="$(SvnDir)svn co --trust-server-cert --non-interactive --username MY_USERNAME --password MY_PASSWORD https://MY_SVN_REPOSITORY $(MSBuildProjectDirectory)\SUB_DIRECTORY" /> 
</Target> 

編輯:編輯,以顯示您可以配置文件夾,但granadacoder有一個很好的解決方案,可以輕鬆集成到構建解決方案中。

+0

svn的完整路徑適用於我,但它是一個組合項目,所以它不會總是有效。 %path%環境變量已設置,這就是它在cmd中工作的原因。似乎Visual Studio無法訪問它。如果可能,我只想讓它訪問%path% –

+0

是否將路徑設置爲系統環境變量?你也可以在命令前添加「set path =%path%; <path> & & <svn_command>」......一秒鐘,我要更新我的文章。 – Nicodemeus

+0

它一定是一個用戶環境變量。我添加爲一個系統環境變量,現在它的作品,謝謝。 –

1

在dos命令窗口輸入「set」。

並看看「路徑」。

您可能會看到「svn.exe」所在的文件夾。

你的msbuild可能看不到它。

但還有更好的辦法。

獲取並安裝MSBuild社區任務.........並且他們有一個svn任務。 它比編碼EXEC命令更容易。

很多自定義的Msbuild任務就是這樣。它們只是包裝命令行調用,但給你可設置的屬性,而不是連接exec命令。

https://github.com/loresoft/msbuildtasks/tree/master/Source/MSBuild.Community.Tasks/Subversion

一個例子

<SvnExport RepositoryPath="file:///d:/svn/repo/Test/trunk" 
LocalPath="$(MSBuildProjectDirectory)\Test\Export"> 
<Output TaskParameter="Revision" PropertyName="Revision" /> 
</SvnExport> 

或者,如果MSBuild擴展包更是你的那杯茶。

http://www.msbuildextensionpack.com/help/4.0.5.0/html/bccddf04-f5ee-21d4-0f64-bb1b42b08257.htm

<!-- Export --> 
    <MSBuild.ExtensionPack.Subversion.Svn TaskAction="Export" Item="c:\path\workingcopy" Destination="c:\path\exported"/> 

我同時使用。而且,使用這些非常有用的附加任務,您將「多次獲得您的資金」。也就是說,它的價值在於讓他們能夠正常運行。

+0

此選項看起來很有趣,但我不想添加任何擴展,因爲它會要求所有開發人員進行安裝。在我下一個單獨的項目中,我可能會試試這個。 –

相關問題