2013-10-08 1 views
0

я работаю над MSBuild сценариев и получать ниже сообщение об ошибкеимя каталога является недопустимым использованием MSBuild FtpUploadDirectoryContent

The "FtpUploadDirectoryContent" task failed unexpectedly. 
error MSB4018: System.IO.IOException: The directory name is invalid. 

мои сценарии это

<FtpUploadDirectoryContent 
     ServerHost="$(ftpHost)" 
     Port="21" 
     Username="$(ftpUser)" 
     Password="$(ftpPass)" 
     LocalDirectory="E:\demo\test.txt" 
     RemoteDirectory="website/config" 
     Recursive="true" 
     /> 

мой IIS прошел путь C: \ Inetpub \ Wwwroot и папка веб-сайта \ config существует внутри [C: \ inetpub \ wwwroot \ website \ config]. но все же я получаю сообщение, например, имя каталога недействительно .please дайте мне знать, как решить эту проблему. Какая правильная синакс для этого .. pls предлагают, если у othere вещь требуется

ответ

0

LocalDirectory = "E: \ Демо \ test.txt"

Вы дали ему имя файла, а не каталога.

E: \ demo \ test.txt - это имя файла.

Вот код из

https://github.com/loresoft/msbuildtasks/blob/master/Source/MSBuild.Community.Tasks/Ftp/FtpUploadDirectoryContent.cs

  try 
      { 
       UploadDirectory(LocalDirectory, "*.*", Recursive); 
      } 
      catch(FtpException caught) 
      { 
       Log.LogErrorFromException(caught, false); 
       Log.LogError("Couldn't upload directory."); 
       return false; 
      } 


     foreach(string file in Directory.GetFiles(localPath, mask)) 
     { 
      String filename = Path.GetFileName(file); 
      Store(file, filename); 

      Log.LogMessage(MessageImportance.Low, "{0} uploaded succesfully.", localPath); 
     } 

Так что вы пытаетесь сделать, это по существу:

Directory.GetFiles("E:\demo\test.txt" , "*.*)) 

, который не будет работать.

Изменить его:

LocalDirectory="E:\demo\" 

Пример кода по ссылке выше GitHub.

/// <Target Name="DeployWebsite"> 
/// <FtpUploadDirectoryContent 
/// ServerHost="ftp.myserver.com" 
/// Port="42" 
/// Username="user" 
/// Password="[email protected]" 
/// LocalDirectory="c:\build\mywebsite" 
/// RemoteDirectory="root\www\mywebsite" 
/// Recursive="true" 
/// /> 

Примечание: LocalDirectory не ссылается на имя файла.

Если вы хотите, чтобы загрузить один файл, вот возможная альтернатива:

https://www.assembla.com/spaces/GHFtpTask/wiki/Home/history

Основные особенности FtpTask для MSBuild являются:

**Upload, download or delete a single file on a FTP server** 
Recursively upload, download or delete a directory 
Use multiple FTP connections simultaneously 

FtpTask для MSBuild требуется .NET 2,0.

+0

Я тебя не понял? Не могли бы вы объяснить больше? –

+0

так что вы можете узнать о LocalDirectory и RemoteDirectory в стороне FtpUploadDirectoryContent. imean, как установить путь на нем. –

+0

Я бы использовал такую ​​программу, как Filezilla, чтобы убедиться, что ваш FTP работает правильно, ~ затем переместите параметры в задачу . – granadaCoder