Today I was working in a fairly large website in VS 2005, and there were
some public properties of a UserControl that I wanted to see if they were
used at all. I did a Find Usages search for them, and nothing came up.
However, after I removed them I noticed that the website would no longer
build, because a page actually was referencing the properties. I opened
up that page in VS, put the properties back in, did another find usage search,
and then it found them. I was working in build 902, and using VS 2005.
I just have to say, I am encountering issues like this all the time when
working on web projects. ReSharper seems to be pretty solid on regular c#
projects, but when it comes to web projects, there are all sorts of little
bugs that are quite irritating. Its clear web projects don't get the same
amount of attention both in terms of features and in terms of QA as other
types of projects. The lack of features doesn't bother me so much, but the
lack of QA is extremely annoying, especially when new versions of RS come
out and while some of the old issues may have been fixed, there seems to
always be a bunch of new ones to take their place. I can say without any
doubt, this problem is cutting into sales significantly. There are several
people at my company who have tried RS, but were too annoyed by the bugs
and so they uninstalled it. I try to convince them that its still a net
gain, but I can understand that from their perspective, they aren't going
to take the time to learn a new tool that will cause some productivity losses.
To give some specific examples of issues that are present in the 4.0 release
that impact me in my daily development, here are a few I can think of off
the top if my head:
- RS does not recognize control declarations when they exist inside public
properties of a parent control, where those public properties are of type
ITemplate (SingleInstance), or PlaceHolder. Our site is full of custom templated
controls, and having lots of false negatives in red, and the lack of intellisense
- Several of the mini code generation features try to generate the code
in a block in the code in front, rather than the code behind of
a Page or UserControl. This was really bad in v2 and v3 of RS, and while
sometimes in 4.0 it gives you the choice of code in front or code behind,
there are several cases where it still just does it in the code ahead.
- BuildProvider support does not support partial classes. While it was
certainly a welcome improvement to have some BuildProvider support for 4.0,
it is limited in that if the generated code contains partial classes, and
you have separate .cs files to define the other half of the class (a common
scenario when using code generation), RS does not think the two parts of
the class are in the same assembly, when in fact they are. This leads to
a bunch of red code that is in fact just fine. Remember, whenever you have
red code, it prevents lots of other good RS features from working reliably
like optimize usings.
- There is a parsing bug in the ReSharper ASP parser so when I am working
in the code in front and I declare a property of a control that will use
an expression like this: MyProperty="]]>" When
I type the $ character, RS shows the gutter is red, even when I finish the
expression. I have to delete and retype a character on the control to get
it to fix itself. This happens every time, and is extremely irritating.
I'm sorry that I have not created sample solutions for all of these, I just
don't have the time to do that. To be completely frank, it baffles me that
some of these issues ever made it out in a release. Am I really doing such
weird edge case things here? I have reported several other issues in the
past, and to JetBrains credit, many of them have been addressed. But the
reality is that I don't have the time to create great repro steps and sample
solutions everytime I encounter an issue. There are too many of them.
Please don't take this post to harshly, I think RS is a great tool and I
evangelize it to any developer I come in contact with that is not using it.
However, I would love to see these types of issues addressed, and even more
importantly, prevented in future releases (hopefully soon). I know there
would be much less resistence to its adoption in my company if that were