I've come up against the unlikely scenario when I reference two external assemblies that both have the same namespace and type names. When I try to use the type, the compiler throws an error that it cannot resolve which one I want to use.
I see that C# offers a mechanism to use aliases for references. You can even specify these aliases via the Property
window of a reference in Visual Studio 2008. How do I use this alias in my code? As I understand, I should be using the ::
operator, but it fails with the following error:
CS0432 - Alias not found
The usual .
operator fails as well.
In the output window I see that the compiler gets the alias passed correctly in its command line.
Any pointers on what I may be able to try next are greatly appreciated.
-
extern alias alias1; using alias1::Namespace;
HTH, Kent
RandomNickName42 : This can be used for a method to workaround around CS0433 ( C# compiler error ). http://msdn.microsoft.com/en-us/library/64wh5743(VS.100).aspxRandomNickName42 : I just noticed, it's 1 error number from "Gortok's" question here, funny. -
Try this:
extern alias asm1; extern alias asm2; namespace Client { class Program { static void Main(string[] args) { asm1.MyNs.MyClass mc1 = null; asm2.MyNs.MyClass mc2 = null; } } }
And add
global,asm1
to the project reference for assembly1 andglobal,asm2
for assembly2 -
I think you need to use an extern alias. Anson Horton has a good blog on this problem and how to use extern alias to fix it.
-
When you reference some assembly in project it has default alias "global". When you add another alias for that assembly, e.g. "global, AssemblyA", you will reference it like this:
using SomeTypeAlias = AssemblyA::Company.Product.SomeType;
or:
void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
0 comments:
Post a Comment