MVC WebDeploy Includes Referenced Assembly Xml Documentation Files - asp.net-mvc-3

I'm using WebDeploy to package my ASP .Net MVC3 project for deployment, but I'm finding that the package is being bloated by a number of xml files. These appear to be XML documentation, presumably used by VS2010 for intellisense.
For example, in my built package (and build dir) I have both NHibernate.dll and NHibernate.xml.
Do these xml doc files need to be deployed?
How can I exclude them from the build / webdeploy if not?
Thanks!

Two
things to check:
1) Are you using a debug build instead of a release build to build your package?
2) For information on excluding specific files or folders from a deployment, see the ASP.NET Web Application Project Deployment FAQ. There's also a blog post on customizing a deployment package that has information on how to use skip rules to exclude files or folders from a particular Web Deploy operation.

Related

Create WebDeploy Zip Containing Web Project and Unreferenced Modules

We have a VS 2017 Solution with a main web project in it. We also have 3 other web projects - these are modules that depend on the main web project. However, the main web project doesn't reference or known anything about that modules. When the solution builds the modules copy their output to the bin folder of the primary web project. The modules must depend on the latest version of the main project, so it needs to build main first and then the modules. This all works great locally - the site loads the modules work etc.
We are currently using Octopus and its Octopack step runs after Solution and gets all the files. We are trying to move to just using VSTS and are having problems getting the module files into a standard web deploy zip.
When MSBbuild runs on Solution it creates a zip file per web project. The zip file for the main project doesn't contain the Dll files for the modules (even though they are in bin folder). Therefore when we deploy via VSTS site is missing the modules. How do we tell MSBuild to create a single webdeploy package for the solution including the built modules?
The MSBuild command is basically the out the box one from VSTS:
/p:DeployOnBuild=true
/p:WebPublishMethod=Package
/p:PackageAsSingleFile=true
/p:PackageLocation="C:\temp\web.zip"
As far as I can see MsBuild is making the webdeploy zip before the other solution items copy their contents into the bin folder. MSBuild is a bit of a mystery to me at the best of times.
Largely this is just a case of making MSBuild include extra files that aren't part of the project. The pack web project publish only cares about files that are included in the project.
I updated main web project Csproj file following the guide in this question How do you include additional files using VS2010 web deployment packages?. I ran MSBuild once to build Solution so module dll files were available and I then ran MSBuild again with main web project to create the WebDeploy output with the extra included files.
Not sure this is the best way - seems a bit convoluted just to add some files but it works.

How to "inject" NuGet package in Jenkins CI build job

So here is the case: We have a web application which can be deployed for different customers. The web application can be extended by different modules per customer. The modules are created as NuGet packages and contain the DLLs together with static files like e.g. HTML, CSS, JS, ASMX...
As not all customers use the same modules and the base web application shall be as sleek as possible, the web application project itself doesn't know anything about the modules. Instead a Jenkins build job is available for each customer. In this build job the packages.config file will be modified to add the NuGet package entry for the wanted module. Then we do a nuget.exe restore and a nuget.exe update (to ensure it's on the latest version) for the module NuGet package. After this we use msbuild and Octopack to build and deploy the web application.
All of this works great for the DLLs included in the modules NuGet package and for the web.config transformations (done via web.config.install.xdt), but unfortunately it doesn't work for the static files included in the modules NuGet package :(
I assume that this is the case due to the missing references in the web applications .csproj file!? So the static files are actually copied to the correct locations, but are not added to the final Octopack Nuget package as they are not recognized as project content.
As far as I have researched till now this is nothing we can solve using the NuGet CLI itself, but are there any other options maybe? The Package Manager Console is only available within the powershell context of Visual Studio, right? (Update-Package -Reinstall would be perfect I guess)
Any other ideas?
We found the following solution (Octopack to win!). Instead of relying solely on NuGet, we use an option provided by Octopack which is OctoPackEnforceAddingFiles=true. This tells Octopack to not only add the project files to the resulting NuGet package (as it would normally do), but on top of this add files/folders listed in the <files> section defined in a .nuspec file you added to the project. See: http://docs.octopusdeploy.com/display/OD/Using+OctoPack#UsingOctoPack-IncludingadditionalfilesusingaNuSpecfile(.nuspec)
So our base project only has the nuspec file with an empty <files> section. The module then includes XDT files to tranform the nuspec file on (un)install to configure the additional files/folders which shall be added by Octopack. This way they don't have to be part of the csproj file.
I would love to see this option to handle the <files> section as an inclusive list of additional files (instead of either csproj or files section) be added to the nuget cli as well.

Perfered method for removing Roslyn folder from Octopus deploy nuget package

I've noticed that octopack is including the Roslyn folder under the bin folder for my web deployment. What would be the preferred method for excluding this from the build without affecting development. I considered a post build event in only the "release" solution config to delete it but wondered if there was a better way (and it doesn't need to be specific to octopus).
This folder is added by the Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget package. If you want C#6 support in Asp.Net (.cshtml or .aspx) files it needs to be there, because the roslyn's csc.exe from that folder is used to compile your views.
In order to be able to remove it (not deploy it), you'd need to precompile your web application with aspnet_compiler.exe

How to include custom files into Deployment Package for ASP.NET MVC 3 project

We are using msdeploy (from VS 2010) to build deployment package of our web project. The problem is that we'd like to include our custom file (for this scenario it is app_config.htm "template" file which will be used for maintenance mode) into that package.
Is it somehow possible to include such kind of custom file into the deployment package ??
In the project properties, section Package/Publish web -> Items to deploy we prefer the option Only files needed to run this application. We don't want to include all files only because of this one (app_offline.html.template) we want to have there.
EDIT solution found here: How do you include additional files using VS2010 web deployment packages?
You could have a look at KwateeSDCM. It's got a pretty good mechanism for overriding standard package (web applications) files with versions that can be customized according to the target server and/or version.

ASP.NET 4.0 Deployment package include

The build Deployment package feature of Visual Studio 2010 doesn't copy the App_GlobalResources directory from my ASP.NET 4.0 WebForms application.
I know I can use for example "ExcludeFoldersFromDeployment" to exclude folders from the deployment, but how can I include this folder with MSBUILD?
This: Web Deployment Tool (MSDeploy) : Build Package including extra files or excluding specific files might help.

Resources