Question

i am working on msbuild scripts and getting below error message

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

my scripts is

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

my IIS hosted path is C:\inetpub\wwwroot and website\config folder is exist inside [C:\inetpub\wwwroot\website\config].but still i am getting message like directory name is invalid.please let me know how to resolve this issue.what is the proper systax for this..pls suggest if any othere thing is required

Was it helpful?

Solution

LocalDirectory="E:\demo\test.txt"

You gave it a file name, not a directory.

E:\demo\test.txt is a filename.

Here is the code from

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 );
        }

So what you're trying to do is essentially:

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

which isn't going to work.

Change it to:

LocalDirectory="E:\demo\"

Example code from the github link above.

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

Note: LocalDirectory does not refer to a filename.

If you want to upload a single file, here is a possible alternative:

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

The main features of FtpTask for MSBuild are:

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

FtpTask for MSBuild requires .NET 2.0.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top