<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>/Dan/.NET - Dan Robey's .NET Dumping Spot : /c#</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/category/23.aspx</link><description>/c#</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50615)</generator><item><title>removing designer files from template</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2008/04/24/remove_designer_files_from_visual_studio_templates.aspx</link><pubDate>Thu, 24 Apr 2008 22:25:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:67637</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/67637.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=67637</wfw:commentRss><description>I've gotten fed up with designer files when I'm doing development, so I removed them from my "add item" templates.&amp;nbsp; I basically followed the instructions at &lt;a href="http://davidhayden.com/blog/dave/archive/2005/11/05/2556.aspx"&gt;dave hayden's blog&lt;/a&gt; with a few added quirks.&amp;nbsp; That means edit the files inside the relevant zip in C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\ItemTemplates\CSharp\1033&amp;nbsp; That deals with removing "partial" from the file and setting AutoEventWireup="false" which makes stuff slightly quicker in production.&amp;nbsp; To actually remove a file from the template, you have to delete the lines from the .vstemplate file, otherwise Visual Studio will complain that it's missing.&amp;nbsp; Then you should just have to restart Visual Studio and it should load up.&lt;br&gt;&lt;br&gt;While I was experimenting, I ended up messing up my templates, which was painful to fix, so if that happens, the solution is to open a .NET command prompt (it's in the start menu next to Visual Studio under Visual Studio-&amp;gt;tools) and type in:&lt;br&gt;&lt;strong&gt;devenv /installvstemplates&lt;br&gt;&lt;/strong&gt;If that doesn't work, here are some other options to &lt;a href="http://geekswithblogs.net/ehammersley/archive/2005/11/08/59451.aspx"&gt;reset or reload your visual studio templates&lt;/a&gt;.&lt;br&gt;&lt;strong&gt;&lt;br&gt;&lt;/strong&gt;&lt;a href="http://davidhayden.com/blog/dave/archive/2005/11/05/2556.aspx"&gt;&lt;/a&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=67637" width="1" height="1"&gt;</description></item><item><title>link to every page in a .net project</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/08/19/17810.aspx</link><pubDate>Fri, 19 Aug 2005 22:13:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:17810</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/17810.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=17810</wfw:commentRss><description>I wanted to print out a list of links to every page in a c#/ASP.NET project to check that they all looked correct.  The caveats: the namespace needs to be the same as the IIS virtual directory for the links to work.  We first get a list of all classes that are derived from System.Web.UI.Page, then Response.Write links to each of them:&lt;br /&gt;&lt;br /&gt;

			System.Reflection.Assembly a = System.Reflection.Assembly.GetExecutingAssembly();&lt;br /&gt;
			foreach(System.Type type in a.GetTypes())&lt;br /&gt;
			{&lt;br /&gt;
				if(type.IsClass &amp;amp;&amp;amp; type.IsSubclassOf(typeof(System.Web.UI.Page)))&lt;br /&gt;
				{&lt;br /&gt;
					string page = type.ToString().Substring(4).Replace(".","/")+".aspx";&lt;br /&gt;
					Response.Write("&amp;lt;a href="\"/"+page+"\""&amp;gt;"+type.ToString()+"&amp;lt;/a&amp;gt; ");&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=17810" width="1" height="1"&gt;</description></item><item><title>strange .net special character quirk</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/08/02/17094.aspx</link><pubDate>Tue, 02 Aug 2005 21:52:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:17094</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/17094.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=17094</wfw:commentRss><description>Apparently doing String.IndexOf("special character") might not always work as you expect it.  The æ character is found in the string "ae" Test yourself by dropping this into a .aspx page:&lt;br /&gt;&lt;br /&gt;  
&amp;lt;% if("ae".IndexOf("æ") == 0) {Response.Write("why?");}%&amp;gt;
&lt;br /&gt;&lt;br /&gt;
I don't really understand why it works that way, but the workaround for this is to use .IndexOf(char) instead:&lt;br /&gt;
&amp;lt;% if("ae".IndexOf('æ') == -1) {Response.Write("all is well in the world");}%&amp;gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=17094" width="1" height="1"&gt;</description></item><item><title>firefox/IE ASP.NET textbox</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/04/11/10245.aspx</link><pubDate>Mon, 11 Apr 2005 19:41:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:10245</guid><dc:creator>dsrobey</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/10245.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=10245</wfw:commentRss><description>Just in case anyone else ever has this problem, the asp:textbox in ASP.NET has the two width properties "Width" and "Columns"  if you want to set the width of a textbox to a certain size so it will display correctly across browsers, both width and columns must be set.  Internet Explorer uses the width field to display on a pixel basis, and firefox uses the "size" attribute which Columns will set when rendered.  If you set one and not the other, the textbox width will be the correct size in one but not the other.
&lt;br /&gt;&lt;br /&gt;
Also remember that using the autoindent function in Visual Studio 2003 with inline imperatives will add tabs which IE sometimes sees as extra spaces, screwing up precision page layouts, especially around TD elements.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=10245" width="1" height="1"&gt;</description></item><item><title>random ascii generator</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2005/02/08/5989.aspx</link><pubDate>Tue, 08 Feb 2005 19:52:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:5989</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/5989.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=5989</wfw:commentRss><description>I needed to test an ecryption routine over a large amount of text, so I came up with this quick/dirty c# code to generate random (english/code) ascii text.  If you need to test with long strings, you should use a stringbuilder instead of normal string objects:
&lt;br /&gt;&lt;br /&gt;
System.Random rng;&lt;br /&gt;
string GenerateRandomText(int length)&lt;br /&gt;
{&lt;br /&gt;
	string retstr = "";&lt;br /&gt;
	if(null == rng)&lt;br /&gt;
		rng = new System.Random();&lt;br /&gt;
	for(int i=0;i&amp;lt;length;i++)&lt;br /&gt;
	{&lt;br /&gt;
		// good ascii vals between 32 - 126&lt;br /&gt;
		retstr += (char)(rng.Next(127-32)+32);&lt;br /&gt;
	}&lt;br /&gt;
			return retstr;&lt;br /&gt;
}&lt;br /&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=5989" width="1" height="1"&gt;</description></item><item><title>find which validator's not working</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2004/10/16/1099.aspx</link><pubDate>Sat, 16 Oct 2004 21:36:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:1099</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/1099.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=1099</wfw:commentRss><description>sometimes you get a validator that's screwing up Page.IsValid, but it doesn't show text for some reason. Here's how I find it:
&lt;br /&gt;&lt;br /&gt;
foreach(BaseValidator b in Page.Validators)&lt;br /&gt;
{&lt;br /&gt;
if(!b.IsValid)&lt;br /&gt;
	Response.Write(b.Text+":"+b.ErrorMessage);&lt;br /&gt;
}&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=1099" width="1" height="1"&gt;</description></item><item><title>embedded windows forms</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2004/07/07/669.aspx</link><pubDate>Wed, 07 Jul 2004 16:03:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:669</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/669.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=669</wfw:commentRss><description>The steps (hopefully)to making a windows form into an embedded internet object:&lt;br /&gt;
1: make the solution compile as a class library&lt;br /&gt;
2: delete the entry point (main())&lt;br /&gt;
3: have your class inherit from a userControl&lt;br /&gt;
4: compile into a .dll&lt;br /&gt;
5: drop the .dll into a virtual directory
6: create a reference to the class in a html file in a virtual directory&lt;br /&gt;
7: adjust security access in directory and through IIS&lt;br /&gt;
8: ?&lt;br /&gt;&lt;br /&gt;
Did I miss anything?&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=669" width="1" height="1"&gt;</description></item><item><title>excellent ws-security reference</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2004/04/26/547.aspx</link><pubDate>Tue, 27 Apr 2004 00:10:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:547</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/547.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=547</wfw:commentRss><description>Good reference on &lt;a href="http://msdn.microsoft.com/webservices/building/wse/default.aspx?pull=/library/en-us/dnwse/html/wssecdrill.asp"&gt;Web Services Security Drilldown&lt;/a&gt; for anyone interested in how to programmatically manipulate the WS proxy to provide security using WSE2.  &lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=547" width="1" height="1"&gt;</description></item><item><title>XAML layers</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2004/04/26/546.aspx</link><pubDate>Mon, 26 Apr 2004 16:26:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:546</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/546.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=546</wfw:commentRss><description>What have people heard about the new &lt;a href="http://msdn.microsoft.com/Longhorn/understanding/pillars/avalon/default.aspx"&gt;Avalon&lt;/a&gt; / &lt;a href="http://weblogs.asp.net/autocrat/archive/2004/04/05/107488.aspx"&gt;XAML&lt;/a&gt; programming practice MS seems to be pushing?  To me it seems almost parallel to the Java/Javascript division, with new twists thrown in.  What it promises (if it is integrated into IE as I think it will be) is a programming environment in which rich media applications similar to flash can be thrown onto a website and be dynamically loaded into a sandboxed environment on the client side.  If we think about the push to portal systems and the internet as storage space, this is a big step in that direction.  Pieces of software can be loaded and unloaded, taking advantage of web services to provide local/networked actions.  Think of a networked MATLAB where you interact through a local presentation layer while all the number crunching is done by server farms.  In theory, you could make an entire networked operating system using this stuff&lt;br /&gt;&lt;br /&gt;
Dividing presentation and implementation is something we've been trying to do for a long time, but this seems to even more strongly enforce it.  Talk about Macromedia providing a development environment for the presentation layer would make the top layer even slicker, while the implementation is done through "partial classes."  This means not having to learn the strange flash hooks for web services but still being able to integrate rich displays with solid framework.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=546" width="1" height="1"&gt;</description></item><item><title>dynamic pictures</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2004/04/24/544.aspx</link><pubDate>Sat, 24 Apr 2004 23:14:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:544</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/544.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=544</wfw:commentRss><description>&lt;p&gt;I was thinking about how to get around the limitations some sites have on the http-referer for pictures (mostly webcomics that don't want deep linking of pics), and I came up with an interesting idea. Using the strange qualities of Response.Write() and Response.End(), I made a page which takes as input which picture it should get (does a n-1 tier lookup for the http-referer, other info), and then downloads that picture and serves it to the client.&lt;br /&gt;&lt;br /&gt;Confused? You should be. Since I whipped it up in about ten minutes, the code's not the cleanest, but it'll give the basic idea:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;if("pic".Equals(Request.Params["pic"])) {&lt;br /&gt;System.Net.WebClient wc = new System.Net.WebClient();&lt;br /&gt;wc.Headers.Add("Referer","http://rx7.mit.edu");&lt;br /&gt;string newimage = this.Server.MapPath(".")+"\\pics\\"+System.Guid.NewGuid().ToString();&lt;br /&gt;wc.DownloadFile("http://rx7.mit.edu/help.gif", newimage);&lt;br /&gt;Response.WriteFile(newimage);&lt;br /&gt;Response.End();&lt;br /&gt;System.IO.File.Delete(newimage);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;So the image reference looks like &amp;lt;img src=“$page?pic=pic“&amp;gt;, where $page is your web app's address.&lt;br /&gt;Instead of downloading the picture from somewhere, it could be dynamically created, using all of .NET's image manipulation libraries, say, to show the time, or some graphic representation of any data .net handles.  Or do checking before serving an image to see if the user has correct permissions.  Anything your heart desires.&lt;/p&gt;&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=544" width="1" height="1"&gt;</description></item><item><title>Exceptions- use them!</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/12/08/484.aspx</link><pubDate>Mon, 08 Dec 2003 07:20:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:484</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/484.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=484</wfw:commentRss><description>I am annoyed. I am extremely annoyed. I have just taken an hour to debug an error which did not exist. I downloaded the source code for the newest taxi server for 1.124. Installed, set permissions, etc. When I hit the server, it froze. ASPNET went to 99% and never came back. Browsed through the code a bit, it all looked reasonable, figured it was my fault. Did windows update, and .NET framework SP2 doesn't seem to be installing, or maybe it is, but it never seems to figure out that it's already there.&lt;br /&gt;&lt;br /&gt;After about an hour of reinstallation, etc. I debugged the code a little more. I found that the file wasn't loading. And I had no clue. Why? Because someone had commented out a catch statement which would have thrown the error my way. I have just wasted an hour I could be programming a DFS strategy engine on finding a permissions error. (Yes, even when “Everyone” can read a file, that still doesn't mean ASPNET can).  This innocuous little snippet of code went:&lt;br /&gt;&lt;br /&gt;catch&lt;br /&gt;{&lt;br /&gt;//throw(ea);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;why? What is the purpose of a catch statement if not to give some user feedback about why something has gone wrong. I don't write perfect code. You don't write perfect code. Nobody writes perfect code. That's why exceptions should be caught and some feedback given. &lt;u&gt;Always&lt;/u&gt;. Please, for the children's sake, catch the exceptions and give feedback.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=484" width="1" height="1"&gt;</description></item><item><title>security issues with xmlportal</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/11/20/477.aspx</link><pubDate>Thu, 20 Nov 2003 18:51:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:477</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/477.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=477</wfw:commentRss><description>I just realized that since our xml data files have to be set ASPNETuser readable, if an adversary knew their location, he could read all the data, including users and passwords.  I'm not sure how much is needed, but here are some possible solutions depending on the security desired:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;If we want to protect all the information, we can symmetrically encrypt the file with some machine dependent salt plus extra passphrase.  On the first serialization call we need to decrypt, which might take about half a second. Weakness: if the salt algorithm is known, and machine dependent secrets are known, the key can be found by looking through the code.&lt;/li&gt;
&lt;li&gt;If we are just worried about the user passwords, we can take the standard approach of storing not the password but the SHA1 of the password plus some salt.  More secure, but has dictionary attacks.&lt;/li&gt;
&lt;li&gt;In addition, we can give the XML file permissions such that only users requesting from the local machine can get it.  This makes data theft harder, since adversaries would have to spoof their origin IP addresses, especially hard if the server is using NAT.&lt;/li&gt;
&lt;/ul&gt;
I'm going to have to think about the problem a little more before coming up with a good way of doing this.  I'll definitely implement the SHA1 though.
&lt;br /&gt;&lt;br /&gt;Some decent references I came across were this &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetsec/html/SecNetHT03.asp"&gt;msdn article&lt;/a&gt; on "building ASP.NET applications" securely, which gives good code examples, and &lt;a href="http://msdn.microsoft.com/msdnmag/issues/03/11/ProtectYourData/default.aspx"&gt;another&lt;/a&gt; on protecting sensitive strings in .NET code in general.  Of course, in the end what they rush over quickly is that if you are storing sensitive keys (for SQL calls) in code, there will virtually always be a way to get to it, through clever reverse engineering, so if at all possible, don't do it!&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=477" width="1" height="1"&gt;</description></item><item><title>BigInts, C#, Crypto</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/11/17/475.aspx</link><pubDate>Tue, 18 Nov 2003 03:29:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:475</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/475.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=475</wfw:commentRss><description>I take back what I said &lt;a href="http://blogs.mit.edu/dsrobey/posts/413.aspx"&gt;here&lt;/a&gt; about the C# BigInt class.  It actually is very well put together.  I take issue with the fact that .Equals() does not take an Object, but aside from that it does everything you'd really want a bigint class to do.  I'm wondering what the mono guys are using for all the security classes in .NET.  Surprisingly (or maybe not), .NET already has a lot of the typical security functions built in.  Check out &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemsecuritycryptographyhierarchy.asp"&gt;System.Security.Cryptography. &lt;/a&gt; if you're interested.  A lot of those functions are in there to do code signing, but are generic enough to use for other things.  Since .NET has AES (Rijndael) built in, I wonder how they get around the strong crypto export restrictions.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=475" width="1" height="1"&gt;</description></item><item><title>eclipse</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/11/17/474.aspx</link><pubDate>Tue, 18 Nov 2003 03:17:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:474</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/474.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=474</wfw:commentRss><description>been playing with &lt;a href="http://eclipse.org/"&gt;eclipse&lt;/a&gt; for a couple days now.  Very nice development environment, and it's written in such a way that it is easily extended.  There's a kind of Intellisense for both Java and C#, and probably more, although those are the only two languages I've played around with.  There are a few quirks which leaves Visual Studio its better, but for a free tool, it's great.&lt;br /&gt;&lt;br /&gt;
The only issue I really have is that sometimes the intellisense drops out if you type too quickly.  Other than that, it's amazing.  It reads off the javadocs/c# documentation for intellisense tooltips, highlights errors dynamically, and all the other little features that make VS.NET helpful to use.  It surprised me quite nicely.  Anyone thinking of linux programming should take a look at it.  I haven't seen whether it does things like web services or different C# project modes yet, but I'm sure that if they're not all there, someone's working on it.&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=474" width="1" height="1"&gt;</description></item><item><title>bigint for c#?</title><link>http://blogs.mit.edu/CS/blogs/dsrobey/archive/2003/10/08/413.aspx</link><pubDate>Wed, 08 Oct 2003 20:18:00 GMT</pubDate><guid isPermaLink="false">dea6705e-d99c-4a22-9533-aabb455eb28d:413</guid><dc:creator>dsrobey</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.mit.edu/CS/blogs/dsrobey/comments/413.aspx</comments><wfw:commentRss>http://blogs.mit.edu/CS/blogs/dsrobey/commentrss.aspx?PostID=413</wfw:commentRss><description>Anyone heard of a bigint class for c#?  I'm talking 2^4096 big here.  Trying to implement a couple encryption routines for &lt;a href="http://theory.lcs.mit.edu/classes/6.857/"&gt;6.857&lt;/a&gt;.

best I could find is &lt;a href="http://www.codeproject.com/csharp/BigInteger.asp"&gt;this&lt;/a&gt;, but it doesn't do a lot of useful things&lt;img src="http://blogs.mit.edu/CS/aggbug.aspx?PostID=413" width="1" height="1"&gt;</description></item></channel></rss>