Website project: want to generate XML documentation on build - visual-studio-2012

For legacy reasons, I'm maintaining a Web Site Project for which I want to provide up-to-date documentation from the XML documentation comments. I gather I can do that by tweaking the <compilers> section in web.config. I finally reached this point:
<system.codedom>
<compilers>
<compiler
language="c#;cs;csharp"
extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider"
compilerOptions="/optimize /doc:C:\temp\my-output-here.xml"
warningLevel="1" />
</compilers>
</system.codedom>
Now when I start the website with (and thus invoke just-in-time compilation) I do get an XML file in the requested location but it's minimal:
<?xml version="1.0"?>
<doc>
<assembly>
<name>App_global.asax.abqhzva4</name>
</assembly>
<members>
</members>
</doc>
It seems like the <compiler> tag doesn't quite do what I want. It must be generating XML for the project folder itself rather than the .cs files, or it's getting overwritten with each compilation unit and I'm only seeing the trivial last one, or... I don't know. I'm not sure. This config tag is not well documented.
Long story short, I'm looking for a way to get XML documentation for all the .cs files in this website project. It doesn't matter if it's all in one file, in separate files, or even shoved into memory at run time.
I'm aware of the prior question on this, but the link provided there has been redirected to the Sandcastle site. That's great, but it's way more than I'm actually going to use on this project. Simply getting XML documentation at build time or run time is all that is necessary.
My question then is: What do I need to do to get the <compiler> config entry to generate XML docs for a Website Project?

I have an ugly workaround as well... But here goes!
1. Download the latest Sandcastle Installer from this page - https://github.com/EWSoftware/SHFB/releases
2. Unzip and run the installer
3. Copy EWSoftware.CodeDom.dll into your website's \bin directory. The default location of this file is - C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Extras\EWSoftware.CodeDom.dll
4. Modify web.config as follows:
<configuration>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
compilerOptions="/docpath:C:\Publish\Docs"
type="EWSoftware.CodeDom.CSharpCodeProviderWithDocs, EWSoftware.CodeDom"
>
<!-- NOTE: Change version value as needed (v3.5, v4.0, etc.) -->
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
</compilers>
</system.codedom>
</configuration>
Source: http://ewsoftware.github.io/EWSoftwareCodeDom/html/40ba6bda-95d6-4a64-834f-f7cedcb589d1.htm
5. Rebuild your solution and voila! The folder specified with the /docpath option will contain your XML documentation.

Related

How to reuse Specflow steps from a CodedUITest project in different solution

We have Specflow layer on top of our CodedUITest project. We have some common steps in one CodedUITest project(CodedUITestProject1), which we want to use in another CodedUITest project (CodedUITestProejct2) in different solution.
We have created dll of the CodedUITestProject1 and added its reference in CodedUITestProejct2. Also updated the CodedUITestProject2's App.config file to use bindings from External Assembly like this, but is not working. Any thoughts on this.
<specFlow>
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config -->
<!-- For additional details on SpecFlow configuration options see http://go.specflow.org/doc-config --><unitTestProvider name="MsTest" />
<plugins>
<add name="CodedUi" type="Generator" path="." />
</plugins>
<stepAssemblies>
<stepAssembly assembly="CodedUITestProject1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</stepAssemblies>
</specFlow>
The Visual Studio Integration has some bugs when it comes to additional step assemblies.
So syntax highlighting, IntelliSense and "Go To Definition" can sometimes not work.
Try to delete the specflow-stepmap* files from %temp%.
There are no problems at runtime.
Sometimes VS decides on its own to not copy the referenced DLL if no code usages are done in the consuming project.
Double check your bin folder for CodedUITestProject1.dll it should be missing if VS has decided that you don't need it.
If this is the case then you may need to create a dummy instance of a type from CodedUITestProject1.dll in your hooks (or anywhere in the code) so VS can see that you are using something from CodedUITestProject1.dll. Once the project is built then you may remove the dummy code you have entered.
Another option could be just to References -> CodedUITestProject1 -> Properties-> Set copy local to True. (not confirmed its fixing the problem).
Note: When using BDD steps from external DLL navigation (F12 on a step) is not working.

Is there any possible way to keep comments at a single place if it is repetitive?

I don't know but is there any possible way to keep comments at a single place if it is repetitive, in visual studio editor?
Or something like to create link in comments and if we click on that link and it jumps to bunch of commented code, so we can just write the link where it is needed to write that bunch of code. So no repetitive comments are written.
The C# compiler allows you to reference an external XML file which contains the actual comments for a method. To do this you use an <include> element in the XML doc comment
/// <include file='file.doc' path='Parent/Child[#name="member"]/*' />
The contents of file.doc need to be an XML file and the comment for that method be at the XML path described in the path element
<Parent>
<Child name="member">
<summary>The actual comment</summary>
</Child>
</Parent>
More information is available here
I do not know if Visual Studio will allow you to click and follow through to the documentation. But the correct summary will be emitted in the file XML doc file for the assembly

Making a custom report with ccnet

So I have my output that I used the merge task to put into ccnet.
Now what I need to do is come up with my own custom xsl and output the data.
Any ideas on where there maybe a tutorial on how to do this?
For example what plugin do I need to use? Can I create my own? What does action name do?
<xslReportBuildPlugin description="MSBuild Output" actionName="MSBuildOutputBuildPlugin" xslFileName="xsl\msbuild.xsl" />
in your cruise control folder:
CruiseControl.NET\webdashboard\xsl
Copy any existing xsl (preferably one that is close to what you already want or in a format you like). you could start an xsl file from scratch also.
edit it to what you want it to be with your own file name.
I copied the msbuild.xsl to BMsBuild.xsl and made my changes.
then in dashboard.config
<xslReportBuildPlugin description="BBuildReport" actionName="BBuildReport" xslFileName="xsl\Bmsbuild.xsl"></xslReportBuildPlugin>
Description: what title you want it to have on the webdashboard link
actionName: a unique name that will be used to generate a URL for that xsl/report
xslFileName: the path to the xsl usually just xsl[your xsl file name].xsl
That's the easiest way. The file is nearly entirely xsl so there's not really anything special you need to do or know. Except that the xsl is going to target the merged xml file from whatever you have in the publishers xml logger tag in your ccnet.config
<publishers>
<statistics/>
<xmllogger logDir="D:\Projects\TFS\Main\BuildProcess\logs\ServiceBuilds" />
</publishers>

checking for modifications issues

I got a doubt regarding the usage of ccnet with clear case.I just
got an access to my clear case,i am facing another problem.I have a
VOB named Test_proj which contains many folders which are not of my
concern.Inside that particular VOB,i had made a test folder named
'MY_Source',where i had put all my source files.So when i ran the
ccnet,i found that its checking for mdifications for all the folders
which is really not needed.I just need my ccnet to check for
modifications in that particular folder which is MY_Source.So is there
any other tag which i need to mention along with the viewpath which
just checks for modfication in the particular folder in the VOB rather
than the whole VOB.
2.If it finds any modifications,it should also download the whole
source files and start the compilation process.So how can this be
configured in ccnet.
Thanks and regards
Maddy
Here's a sample config. block I use for ClearCase:
<sourcecontrol type="clearCase">
<viewPath>Y:\Mobi-Info\Source\Components</viewPath>
<autoGetSource>true</autoGetSource>
<useLabel>false</useLabel>
<branch>main</branch>
</sourcecontrol>
viewPath specifies the root directory inside your ClearCase view which you want to be checked for modifications (in my case the Components directory). So if you want CCNet to react only to your MY_Source directory modifications, point directly to it in the viewPath.

Deployment of custom content type, forms, cqwp, and xsl

Right now I have a visual studio project which contains a custom content type that I made. It also contains all the necessary files for making a sharepoint solution (wsp) file and a script to generate this.
Now, I would like to do 2 things.
First, I'd like to create a custom display form for the content type and include it in my solution so that it is automatically deployed when I deploy my solution. How do I include this in my solution and make my content type use it?
Secondly, you can query this type with the CQWP. I've thought about exporting it, adding more common view fields, and then modifying the XSL that is used to render it. How do I include this into my solution so that it is also deployed. I know i can export the CQWP webpart once it's all setup and include it in my project as a feature. But what abuot the XSL?
Looking forward to see your suggestions, cheers.
Did as described in the first answer. Worked like a charm.
Use STSDev to create the solution package.
That should help with creating the WSP. The custom form, CQWP webpart and the .xls file should also be deployable within the project.
To deploy the xslt, your feature will have an
<ElementManifest Location="mywebpartManifest.xml">
This then points to a files such as
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="Yourfile.xslt" Url="Style Library" Path="" RootWebOnly="TRUE">
<File Url="yourfile.xslt" Type="GhostableInLibrary" />
</Module>
</Elements>
for the webpart:
<Module Name="myWebpart" List="113" Url="_catalogs/wp" RootWebOnly="FALSE">
<File Url="myWebpart.webpart" Type="GhostableInLibrary" />
</Module>
Now that file will need to be contained in the solution manifest.xml. This is done automatically from the STSDev project.
e.g.
<Resources>
<Resource Location="SimpleFeature\Feature.xml"/>
The actual schemas are:
Site
Solution
Feature
and a link to someone else with the issue
But where in the folder structure do you deploy the form and the .xsl to?
I have followed your guide and although it deploys the xslt to the feature in 12 Hive it does not place it in the correct style library folder
You need to deactivate / reactivate the feature. This will give you any error messages that are associated with copying the file over.

Resources