Archive for the ‘.NET’ Category
Posted by jpluimers on 2012/06/20
So I won’t forget:
I was trying to generate from the interop.scripting.dll which I guess was the automatically generated dll without strong naming. A wrapperof a wrapper apperently doesnt work.
The following did work:
tlbimp.exe C:\WINDOWS\system32\scrrun.dll /keyfile:..\nameHere.snk /out:Interop.Scripting.StrongNamed.dll
The suite of .NET projects I’m refactoring relies in part on scripting in the Microsoft Script Runtime because the original was build by people bringing their COM love from the VB6 world into the .NET world.
I don’t see COM as the first class citizen it was in the VB6 era. On the other hand, COM and ActiveX play an important role in the .NET world. Sometimes I regret that, as dealing with COM is hard.
Some consider COM a first class citizen in .NET as it was in VB6, especially after the dynamic keyword was added in C# 4.0. The variant type available since Delphi 2 since 1996 does more or less the same as dynamic keyword in C#. I know how Anders Heijlsberg disliked the Delphi Variant support of COM. But COM is what the market wanted in 1996, and that seems true until today.
But I digress.
At least parts of the .NET code needs to become strongly named, so I’m hesitating:
- kick out the COM stuff – and verify through unit tests that the encompassing code still works – or
- generate a strongly named COM Interop Wrapper as described above.
Not sure yet.
Opinions anyone?
Anyway, I’m expecting a few problems here and there, so I’ll be using the CLR Interop Tools like the P/Invoke Interop Assistant and Type Library Importer in Managed Code where needed.
–jeroen
via: Strong name for Interop.Scripting – .NET Framework.
Posted in .NET, C#, Delphi, Development, Software Development, VB.NET | 1 Comment »
Posted by jpluimers on 2012/06/19
Never knew it was so brilliantly easy to undelete files from TFS: you can do it in Visual Studio, by enabling “Show deleted items in the Source Control Explorer” in the settings.
Just look at TFS – Undelete File or Folder for the screen shots.
Not sure in which Visual Studio version this got introduced, but it works in VS 2010 and up.
–jeroen
Posted in Development, Software Development, Source Code Management, TFS (Team Foundation System), Visual Studio 11, Visual Studio 2010, Visual Studio and tools | Leave a Comment »
Posted by jpluimers on 2012/06/13
All .NET languages have a cool feature: enumerated types, for instance enum in C#, Enum in VB.NET, or the enum in the Oxygene language of Delphi Prism. You can even specify the underlying integral type.
It allows you to name values, which can make your code very readable.
It also allows you to assign an integer to each of those values, which allows you to map them to existing integers in the ‘real’ world. This is both a powerful and potentially uncool feature of enums (the other uncool feature is that though you can have bitflags in Enums, most .NET languages don’t have a Set type. You need Set Extensions to do things like Set operations on Card Suit bitflags using C# extension methods).
Because of my background in the 80s in MuSimp and Turbo Pascal, I’ve done quite a bit of enums and sets in the past, hence the mentioned C# enum extension methods mentioned above. While writing this article I also found out Extending’ the Enum Class to Validate the Enum Values with the Flags Attribute that mentions quite a bit of stuff that is complementary to my code and what you will see below.
The risk of assigning integer values on C# enum is that you can assign the same integer value to multiple enum elements.
For instance, this code will fail:
Read the rest of this entry »
Posted in .NET, C#, C# 2.0, C# 3.0, C# 4.0, Development, Prism, Software Development, VB.NET | Leave a Comment »
Posted by jpluimers on 2012/06/06
Basically there are many ways to read/write Excel workbooks and worksheets:
- Use the open source EPPlus .NET assembly (which is based on ExcelPackage)
- Use the open source ExcelLibrary which seems to be derived from PHP ExcelWriter
- Use OleDB to read/write Excel with either the JET (Office <= 2003) or ACE (Office +> 2007) drivers
- Use COM/OleAutomation/Interop/VSTO
The latter is used by many many people, and has two big drawbacks:
- it requires Excel to be installed
- it is painfully slow
The others can run server side as they do not require Excel to be installed. They are also much faster.
I’ve used OleDB, and it is sort of OK, but hard work.
EPPlus is much faster and versatile and seems to be the most active open source project.
–jeroen
Posted in .NET, .NET 4.5, ASP.NET, C#, Development, Excel, Office, Software Development | 2 Comments »
Posted by jpluimers on 2012/06/05
Scott’s blog posts usually contain a truckload of side information in between the main topic.
He was discussing the new ‘designed’ look of Visual Studio 11 (the mantra: just give it a shot, and then tell how you like it; I like the new look and feel very much).
And he also mentioned a site of monochrome Glyphs I hadn’t seen before:
Glyphs are apparently a designer term for icons that are not colorful. You can see a lot of glyphs at http://thenounproject.com
Those glyphs are awesome!
–jeroen
via: Change Considered Harmful? – The New Visual Studio Look and Feel – Scott Hanselman.
Posted in Development, Software Development, User Experience (ux), Visual Studio 11, Visual Studio and tools | Leave a Comment »
Posted by jpluimers on 2012/05/23
Yes. Dorothy. There are people using the ADO .NET Entity Framework with SQL Server 2000 in parallel of moving towards a more modern Microsoft SQL Server version.
Entity Framework is lovely for developing data-centric applications.
By default, Visual Studio 2010 will target SQL Server 2008 as a database. That is fine, but it is kind of invisible it does: there is no property or dialog where you can change this.
What you have to change in order to have the Entity Framework send SQL Server 2000 compatible queries is to:
- Right click your .edmx file
- Choose “Open with”
- Choose the “XML (text) editor”
- Find the ProviderManifestToken attribute
- Change the value (usually from “2008”) into “2000”
- Save the .edmx file
- Build and run your application
A few caveats:
Read the rest of this entry »
Posted in .NET, .NET ORM, C#, C# 2.0, C# 3.0, C# 4.0, Development, EF Entity Framework, Software Development, SQL Server, SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012 | Leave a Comment »
Posted by jpluimers on 2012/05/17
When trying to dissect .NET 1.1 web services from their .asmx and WSDL, you need some tooling.
You’d think the WCF Test Client works, but it only partially generates the calls; it gets the methods OK, but not the parameters.
Importing the .NET WebService in Visual Studio is another option, but not for a “quick play around with the calls”.
For that, Soap UI seems a good option.
If you know better tools, please let me know in the comments.
It works, and when you get it to work it is dead slow (it keeps one core running at 50%).
Getting it to work gives many people this kind of error message: Read the rest of this entry »
Posted in .NET, C#, Development, SOAP/WebServices, Software Development | Leave a Comment »
Posted by jpluimers on 2012/05/16
As a Delphi user, I’m missing the “Reverse Assignment” feature in the Visual Studio version of CodeRush.
Since CodeRush is very extendable (Mark is still explaining to people how the idea for that came from Delphi Packages back in the mid 90s), you can add this one yourself, as the a answer to this DevExpress support issue shows:
Q:
Is there a quick way to reverse the assignment in CodeRush? For example:
FROM:
Field[“test1”] = edTest1.Value;
Field[“test2”] = edTest2.Value;
TO:
edTest1.Value = Field[“test1”];
edTest2.Value = Field[“test2”];
I know Delphi had this capability in its refactoring, does CodeRush for Visual Studio?
Thanks
Daniel Schipper
Read the rest of this entry »
Posted in .NET, C#, C# 2.0, C# 3.0, C# 4.0, Development, Software Development, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio and tools | Leave a Comment »
Posted by jpluimers on 2012/05/15
(Thanks to a “Missed Post” problem on WordPress.com, this one didn’t get posted on the scheduled date. Sorry for any inconvenience)
One of the next steps in the automated build process I’m setting up is increasing AssemblyVersion values after succesful builds.
It is is in a CCnet / TFS2010 / VS2010 environment.
Some links:
–jeroen
via: change assemblyversion during checkin ccnet – Google Search.
Posted in .NET, C#, Continuous Integration, CruiseControl.net, Development, Missed Schedule, SocialMedia, Software Development, Source Code Management, TFS (Team Foundation System), WordPress | Leave a Comment »
Posted by jpluimers on 2012/05/15
When in a DTAP environment, you cannot always have complete clean boundaries. Issues in production don’t reproduce in acceptance, you cannot develop in production, etc.
So sometimes you have to simulate or connect to Test or Acceptance Database Servers from a Develop workstation.
There it can get hairy to keep track of which applications connect to which database server.
That’s where the below batch file comes in handy: it scans your systems on connections to common TCP ports used by SQL server, then for each connection give you some process details (or – if you add a commandline parameter – all details that TLINK can get).
The batch file uses the built in tools tasklist, netstat, find and sc (the latter to show information on the local running SQL Services).
It also uses TLIST, which can be a bit awkward to get.
Read the rest of this entry »
Posted in .NET, Batch-Files, CSV, Database Development, Development, Scripting, Software Development, SQL, SQL Server, SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 7 | Leave a Comment »