Deploy to Web is gone?

I've been using the Deploy to Web command (right click on project) for my ASP.NET project and now it's GONE. The option just isn't there any more. What happened? Did my trial copy expire or something? I never saw a message, etc.


  • MB.5352MB.5352 USMember

    Ah, it's in 5.1.4. BTW, good luck ever seeing money from me until you put that feature back in.

  • mhutchmhutch USMember, Xamarin Team Xamurai

    ASP.NET support is something that's part of the open-source MonoDevelop project on which Xamarin Studio is based and is not commercially supported by Xamarin.

    I made some substantial changes to ASP.NET support in the 5.2 release. These were done in my personal time, in my capacity as a contributor.

    • adding support for with Visual Studio 2013 ASP.NET projects
    • switching over to the MSBuild build engine
    • addin ASP.NET MVC 5.x support,
    • improving code type resolution for WebForms CodeBehind

    I also substantially restructured the ASP.NET addin to ease future maintenance, and removed some things that were unmaintained and/or broken. In particular, I removed the Web Deploy support because it only worked fully on Linux, conflicted with MSBuild, didn't support newer ASP.NET features, and incurred a dependency on the Linux deployment addin.

    I would love to restore Web Deployment support, but I'm the only person actively contributing to the ASP.NET addin, and it's a pretty thankless task.

  • MB.5352MB.5352 USMember

    It worked like a charm in OSX 10.9. If the functionality is still there, just commented out (or whatever) I would LOVE to take a look at it.

    Really, in the end it can be simple as a script that copies files to a folder. That was my work-around (a post build script) until I figured out I could go back a version.

  • mhutchmhutch USMember, Xamarin Team Xamurai

    In theory, yes, it should be as simple as copying the bin directory and all the files in the Project with the Content build action.

    That's essentially what it used to do, except in a very roundabout way. The ASP.NET addin had a dependency on the MonoDevelop.Deployment addin, which was designed as a generic way to deploy projects. Essentially any file in a project could be marked as a deployable file using the Property Pad and then "deploy handlers" could deploy those files to various locations via various mechanisms. So the ASP.NET addin plugged into this three ways:

    • an extension that made the deploy service treat Content and bin files the correct way automatically
    • a menu command to invoke the deploy service on web projects
    • deploy handlers to deploy to SSH and FTP

    There were several problems with this:

    • the Deployment addin was designed around the need of Linux apps so dealt in terms of concepts that were irrelevant to ASP.NET apps - lib and etc directories, etc.
    • the Deployment addin did not handle nontrivial MSBuild features, e.g. items generated by targets, items conditionally included by targets, items with expressions in the path values, etc (it actually predates MSBuild, AFAIK)
    • MS later added a web deploy system to Visual Studio for Web App projects, which wasn't compatible with ours
    • the SSH and FTP deploy handlers only worked on Linux because they used FUSE filesystems (we could not easily integrate an SSH library due to crypto export regulations)
    • it couldn't be invoke from a commandline e.g. by scripts

    Few of these were fixable without a near-total rewrite.

    But why remove the feature when it worked in its current state?

    • Knowing of its problems in its current form, I hoped people didn't depend on it...
    • We're planning to remove the Deployment addin by default since it adds a bunch of Deploy/Publish menu commands that are only really useful for Linux - they're confusing and useless for users developing for Mac, Windows, iOS, and Android.

    If I were to go about fixing this, I'd start by looking at what targets the VS deploy system invokes in the Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets that are imported by every Web Project created by VS, then I would add UI in XS to invokes those same targets. Then I'd make sure that Mono's implementation of Microsoft.WebApplication.targets worked correctly for at least the common use cases. That way we'd end up with a deploy system compatible with VS.

    An interim workaround would be to add a menu command to copy the Content directory and bin directory.

  • geisterpunkgeisterpunk USMember
    edited August 2014

    So what are our options to replicate this behaviour today easily? I am also on OS X, was using this flawlessly to deploy ASP.Net sites, and now I'm a bit stuck with no easy way to push out updates. Any help would be appreciated (or any help in rolling back to a previous version).


    EDIT: I should mention, the site in question is hosted at GoDaddy, so MSBuild is not an (easy) option that I can see...

  • MB.5352MB.5352 USMember

    I went back to 5.1.4. Just drag and drop and you're good to go. After that I guess we're just screwed until all this ASP vNext stuff takes off and we get a better IDE.

  • geisterpunkgeisterpunk USMember

    I had to go back as well. Kind of unfortunate as this feature has worked flawlessly for me since day one.

Sign In or Register to comment.