|
I have an application where I incremented the version on one of the projects now when I try and run it I get an Invalid Caste exception when I try to cast an object to a class that it is (specifically I have a class that implements an interface and I'm trying to cast it to that interface). I get the little message that pops up warning me that some assembly was compiled in release mode so I won't have debugging or some such. This pop up lists the assembly as 1.0.0.0 when I have set the assembly to 1.1.0.0. Why won't it use the new version? I have already removed all references and readded them in all projects that are dependent on this assembly.
|
|
|
|
|
Here is what they do in the Web.config to rebind the MS AJAX stuff, it should work the same for Castle if the assebmliesare compatible.
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
xacc.ide - now with TabsToSpaces supportIronScheme - 1.0 alpha 4a out now (29 May 2008)
|
|
|
|
|
Thanks for the suggestion, I actually just figured it out. There is an XML file that lists all a bunch of types for this Query Builder tool we have and in this XML file it specifies the version, so all I had to do was update the version number in this file and it started working fine.
|
|
|
|
|
hi all.
i saw a application that show all of a .net application code from it exe file.
how can i lock my .net exe file?
sepel
|
|
|
|
|
sepel wrote: i saw a application that show all of a .net application code from it exe file.
These types of program are called disassemblers. Next, they dont show you all the code but the structure and not the logic.
Please remember to rate helpful or unhelpful answers, it lets us and people reading the forums know if our answers are any good.
|
|
|
|
|
Manas Bhardwaj wrote: Next, they dont show you all the code but the structure and not the logic.
Actually, they do show the logic. What they don't show is the exact original source code. There are no comments, some of the variable names may not be correct and so on. However, all the logic is still there.
|
|
|
|
|
Manas Bhardwaj wrote: they dont show you all the code but the structure and not the logic.
Not true. Reflector does show everything.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
Paul Conrad wrote: Not true. Reflector does show everything.
I wish it would show me assemblies without CLI headers
Mark Brock
"We're definitely not going to make a G or a PG version of this. It's not PillowfightCraft." -- Chris Metzen
Click here to view my blog
|
|
|
|
|
You can't lock your code, what you're looking for is Code Obfuscators (sp?).
Tools like Reflector use the IL to rebuild what your code does, the logic is mainly there but it definitely won't be what you originally wrote.
|
|
|
|
|
hammerstein05 wrote: Code Obfuscators
I second that. I've seen the one from RustemSoft actually make Reflector crash when doing a very aggressive obfuscation.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
As in the one reply you got, I'd second hammerstein's suggestion of looking into an obfuscater. Though they are not 100% effective, they do make it difficult to reverse engineer your code.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
"Not only do you continue to babble nonsense, you can't even correctly remember the nonsense you babbled just minutes ago." - Rob Graham
|
|
|
|
|
I agree. I know many of the people I work with should be embarrassed by their work and should not want people to see it. Obfuscation is a good way to hide that embarrassing source code. ;)
led mike
|
|
|
|
|
funny !
|
|
|
|
|
|
Hey guys, im having trouble figuring the ContextMenu out.
Im trying to use it on a WPF control, a calender / roster. When the user right clicks a cell that reperesents the days the context menu pops up with a list of all the shifts, when the user selects one the properties of that cell and the control must change.
my ContextMenu already gets populated, im just having trouble to figure out which entry in the context menu was clicked on. Which event do i use for it?
any ideas?
thanx
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
you.suck = (you.passion != Programming)
|
|
|
|
|
Harvey Saayman wrote: Im trying to use it on a WPF control,
plase put it on WPF Forum. you will get better answer there !!
cheers,
Abhijit
|
|
|
|
|
its not a WPF issue...
i was only trying to give as much info as possible
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
you.suck = (you.passion != Programming)
|
|
|
|
|
It depends on how you're adding them. I've never tried it in WPF so I'm not sure.
In winforms, there are several ways but probably the most WPF like is to use the ContextMenu's ItemClicked event and use the properties of e to determine which item it was.
Hope it helps - if not, post your code that you use to create the menu.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
i cant find any events that give me the info i need as args. i dont seem to have ItemClicked either. Im using System.Windows.Controls.ContextMenu
in the code behind file, i got this so far...
ContextMenu myContextMenu;
private void Border_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
foreach (CellContent cell in Cells)
{
if (((Border)sender).Name == cell.CellBorder.Name)
{
myContextMenu = new ContextMenu();
myContextMenu.Items.Add("Day Off");
myContextMenu.Items.Add("-");
ShiftCtxDataContext shiftCtx = new ShiftCtxDataContext(sqlConnString);
var queryResult = (from myShifts in shiftCtx.Shifts
select myShifts.SHF_Name_VC30);
foreach (var item in queryResult)
{
myContextMenu.Items.Add(item.ToString());
}
myContextMenu.IsOpen = true;
}
}
}
any ideas?
Thanx
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
you.suck = (you.passion != Programming)
|
|
|
|
|
By adding a MenuItem instance rather than just a string you can do it this way
using System;
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication1
{
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
System.Windows.Controls.ContextMenu cm = new ContextMenu();
MenuItem item = new MenuItem();
item.Header = "test";
item.Click += new RoutedEventHandler(item_Click);
cm.Items.Add(item);
this.ContextMenu = cm;
}
void item_Click(object sender, RoutedEventArgs e)
{
MenuItem item = (MenuItem)sender;
Console.WriteLine(item.Header);
}
}
}
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
Thanx dave,
ill have a look and let you know how it goes
Harvey Saayman - South Africa
Junior Developer
.Net, C#, SQL
you.suck = (you.passion != Programming)
|
|
|
|
|
I have a challenge to you all!
I have found a strange (and really annoying!!) behavior when trying to databind a combobox to a property witch is pointing to an interface.
I have the following interface and class:
IPerson.cs:
public interface IPerson
{
string Name { get; set; }
}
Person.cs:
public class Person : IPerson
{
public Person(string name)
{
Name = name;
}
public string Name { get; set; }
public override string ToString()
{
return Name;
}
}
Then I have a form witch contains one ComboBox (comboBox1) and one TextBox (textBox1). The Form1.cs looks like this:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.CurrentPerson = new Person("Person 1");
comboBox1.Items.Add(this.CurrentPerson);
comboBox1.Items.Add(new Person("Person 2"));
comboBox1.Items.Add(new Person("Person 3"));
comboBox1.Items.Add(new Person("Person 4"));
comboBox1.DataBindings.Add("SelectedItem", this, "CurrentPerson");
textBox1.DataBindings.Add("Text", CurrentPerson, "Name");
}
public IPerson CurrentPerson { get; set; }
}
Now to the strange part. If you run the application, change the combobox to "Person 2", and focus the textbox so that the databinding should be triggered, you will see that the combobox is reset to "Person 1"! Why isn't the CurrentPerson changed to "Person 2" instead?
If you let CurrentPerson be a Person, not an IPerson, everything works just fine.
And one more thing... If you add a SelectedIndexChanged event to the combobox, and let it do the databinding, you will find that it is impossible to change the selected item!
Code:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Console.WriteLine("Before: Combo:" + comboBox1.SelectedItem.ToString() +
", Current Person: " + CurrentPerson.ToString());
comboBox1.DataBindings[0].WriteValue();
Console.WriteLine("After: Combo:" + comboBox1.SelectedItem.ToString() +
", Current Person: " + CurrentPerson.ToString());
}
If you try to change the selected item from "Person 1" to "Person 3", you get this output:
Before: Combo: Person 3, Current Person: Person 1<br />
Before: Combo: Person 1, Current Person: Person 1<br />
After: Combo: Person 1, Current Person: Person 1<br />
After: Combo: Person 1, Current Person: Person 1<br />
Expected would be:
Before: Combo: Person 3, Current Person: Person 1<br />
After: Combo: Person 3, Current Person: Person 3
Anyone have any clue what I can do to make this work? (Besides doing the binding manually, of cource...)
Thanks in advance!
|
|
|
|
|
I must admit I haven't tried this, but from what I see the textbox is always bound to the object refered to by CurrentPerson at the time of binding. Are you sure that the text values in the dropdown aren't changing as a result of the text in the textbox being pushed back into the new CurrentPerson?
I'm largely language agnostic
After a while they all bug me
|
|
|
|
|
Thanks for answering!
Yes, I am sure that is not the case. The textbox is just there so I have something else to give focus to. The only reason this is databound, is for testing purpose. (That databinding actually works as it should.) My original case was without the textbox.
It seems that the problem occures when the databinding object tries to set
CurrentPerson = (IPerson)comboBox1.selectedItem;
(or whatever syntax the databinding use.) If I implement this line of code when selected item is changed, it all works just fine.
Any other ideas? I am really stuck here
|
|
|
|
|
Problem solved! (At least workaround found...)
If you are interested in the solution, take a look at http://www.devexpress.com/Support/Center/p/Q182427.aspx
|
|
|
|