Monday, February 1, 2016

How to GAC in Win8

In .net 4.0 Microsoft removed the ability to add DLLs to the Assembly simply by dragging and dropping into C:\Windows\assembly\.
Instead you need to use gacutil.exe, or create an installer to do it.

To use gacutil:
Start -> programs -> Microsoft Visual studio 2010 -> Visual Studio Tools -> Visual Studio Command Prompt (2010)
Then use these commands to uninstall and Reinstall respectively. Note I did NOT include .dll in the uninstall command.
gacutil /u myDLL
gacutil /i "C:\Program Files\Custom\myDLL.dll"

To use Gacutil on a non-development machine you will have to copy the executable and config file from your dev machine to the production machine. It looks like there are a few different versions of Gacutil. The one that worked for me, I found here:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\gacutil.exe.config
Copy the files here or to the appropriate .net folder;
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Then use these commands to uninstall and reinstall respectively
"C:\Users\BHJeremy\Desktop\Installing to the Gac in .net 4.0\gacutil.exe" /u "myDLL"
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\gacutil.exe" /i "C:\Program Files\Custom\myDLL.dll"

Wednesday, November 18, 2015

Assist with debugging .NET application

To assist with debugging any peculiar behavior with code in Visual Studios, use the Microsoft Service Trace Viewer.

1.) Create a trace file - c:\logs\Traces.svclog

2.) Add diagnostics configuration section to the config file
  <system.diagnostics>
    <sources>
      <source name="System.ServiceModel"
              switchValue="Information, ActivityTracing"
              propagateActivity="true">
        <listeners>
          <add name="traceListener"
              type="System.Diagnostics.XmlWriterTraceListener"
              initializeData="c:\logs\Traces.svclog"  />
        </listeners>
      </source>
    </sources>
  </system.diagnostics>

3.) Run the application to produce the behavior and check the log file for assistance.

Wednesday, July 29, 2015

XSLT for converting DataSet to JSON

<xsl:stylesheet version="1.0"
                           xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                           xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                           exclude-result-prefixes="msxsl">

  <xsl:output method="text" indent="no" omit-xml-declaration="yes" />
  <xsl:template match="NewDataSet">
{
    "Jobs": [
        <xsl:apply-templates select="Table"/>
        {}
    ]
}
  </xsl:template>
 
  <xsl:template match="Table">
        {
            "id": "<xsl:value-of select="jobid"/>",
            "title": "<xsl:value-of select="jobtitle"/>",
            "location":{
                "address": "<xsl:value-of select="jobaddress"/>",
                "city": "<xsl:value-of select="jobcity"/>",
                "state": "<xsl:value-of select="jobstate"/>",
                "zip": "<xsl:value-of select="jobzip"/>"
            },
            "group": {
                "groupcode": "<xsl:value-of select="jobgroup"/>",
                "description": "<xsl:value-of select="jobgroupdescription"/>"
            },
            "otherinformation": "<xsl:value-of select="otherinformation"/>",
            "payload": "<xsl:value-of select="payload"/>"
                   
        },
    </xsl:template>

</xsl:stylesheet>

Convert XML format using XSLT

using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public virtual Stream Transform(Stream payload)
{
    XPathDocument myXPathDoc = new XPathDocument(payload);
    XslCompiledTransform myXslTrans = new XslCompiledTransform();
    myXslTrans.Load(this.XsltPath); //Path to XSLT used for transform
    Stream formattedRequest = new MemoryStream();
    XmlTextWriter myWriter = new XmlTextWriter(formattedRequest, null);
    myXslTrans.Transform(myXPathDoc, null, myWriter);
    formattedRequest.Seek(0, SeekOrigin.Begin);

    payload.Close();
    return formattedRequest;    
}

Friday, May 8, 2015

Image on end of TextBox or DropDownBox

Example of how to have image display at start of DropDownList

//css
 .icon{
  background: #ffffff url(/images/icon-search.gif) no-repeat 3px 50%;
}


<asp:DropDownList ID="NameDdl" runat="server" CssClass="icon"></asp:DropDownList>

Friday, April 10, 2015

Retain scroll position after PostBack

To keep current scroll position after postback, use some jQuery and an ASP HiddenField.

 1.) Add the HiddenField to the page:
<asp:HiddenField runat="server" ID="ScrollPosition" Value="" />

2.) Add the Javascript (requires jQuery)
       <script type="text/javascript">
        $(function () {
            var sp = $("#<%=ScrollPosition.ClientID%>");
            window.onload = function () {
                var position = parseInt(sp.val());
                if (!isNaN(position)) {
                    $(window).scrollTop(position);
                }
            };

            window.onscroll = function () {
                var position = $(window).scrollTop();
                sp.val(position);
            };
        });
    </script>