|
It's probably a little late in the day for you, but this is precisely the type of task that things such as IoC and DI were made for. BTW -when you refer to Marketing.Customer, that's the namespace and classname; Marketing may be your folder, but .NET has no concept of the physical file structure of your project, and uses the namespace instead.
|
|
|
|
|
IoC? I havn't practically used that pattern yet, but ain't that some kind of Facade/Controller pattern?
But after what I see in replys, I guess that making folder in the solutions for keeping subsystems controlled, is a good idea, and may be the correct use depending on size of application?
And add the using .Marketing or .Management in the classes, sounds like a nice trick instead of editing 10000 lines of code.
|
|
|
|
|
Hi,
I have a Windows application, within this application I'm wanting to copy particular emails from the Inbox to another user created folder. This is an Exchange email account.
I was adviced that I could use the ExchangeServiceBinding.CopyItem method. I have a few questions regarding this:
1. Is this method available to use in both Windows and Web applications?
2. If it's available to use in Windows applications, how would I go about adding the references for ExchangeServiceBinding to my application? I couldn't find the EWS (ExchangeWebServices) or services wsdl.
Thank you,
Mel
|
|
|
|
|
MWRivera wrote: 1. Is this method available to use in both Windows and Web applications?
Yes. It's a web service that you interact with (actually, a set of services).
MWRivera wrote: 2. If it's available to use in Windows applications, how would I go about adding
the references for ExchangeServiceBinding to my application? I couldn't find the
EWS (ExchangeWebServices) or services wsdl
You need to know which version of Exchange you are targetting. There are, IIRC, three versions that it supports, so you will have to pick an appropriate one. If you are using EWS 2010, have a read of this[^].
|
|
|
|
|
Hi Pete,
Thank you for your quick reply.
We are using MS Exchange 2007. Do you have any information on how I could access the EWS for this in my c# code?
Thank you,
Mel
|
|
|
|
|
First of all, you need to create the proxy reference. This[^] article shows you how to do this with Exchange.
In general, the steps in this[^] article should help you.
|
|
|
|
|
Thank you for the additional information.
I read the first link yesterday on how to add a Web reference. I was unable to gain access to the CAS, I'm assuming I have the FQDN incorrect. Our Exchange accounts are hosted by a third party. Is there anyway to find out the CAS from the account settings in Outlook or anywhere else? If not do you think this is information that a third party host would be willing to share with a client?
Thank you,
Mel
|
|
|
|
|
The host should be willing (and able) to provide you with this information.
|
|
|
|
|
Ok, thank you. I've enquired about it so hopefully they will get back to me soon.
Thanks again Pete. I'll keep you updated.
Thanks,
Mel
|
|
|
|
|
Hi,
I deployed some templates which were working fine till the point where I created a new dll in my project.
As soon as I compiled my solution, I got the error below nothing more than that.
Error 1 The type or namespace 'VisualStudio' doesn't exist in the namespace 'Microsoft' ( an assembly is missing ?)
I moved back till the point where it was working but nothing changed. 2 messages looking as above keep pointing on each of my template.
If someone already met this error or if someone has any idea,
By the way I try to fix it by adding some assembled beginning with
Microsoft.VisualStudio.something but nothing does.
Hoping to have a feedback from you guys,
Thx
|
|
|
|
|
Check the references in your project, and also check the source module that produces the error message for references as above. Without seeing some of your code where the error occurs it is difficult to be more specific.
I must get a clever new signature for 2011.
|
|
|
|
|
Thx Richard,
To be more precise, I get 2 errors similar to the one below per template.
Error 1 The type or namespace 'VisualStudio' doesn't exist in the namespace 'Microsoft' ( an assembly is missing ?)
There is 2 errors messages which are pointing on this part.
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>
<#@ Assembly Name="System.Core, Version=4.0.0.0, Culture=neutral" #>
<#@ Assembly Name="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral" #>
The rest of the errors messages are pointing onother templates but the line pointed are not existing.
I guess it's coming from somewhere else.
I was expecting to fix it with the 2 Assembly lines specifing my version of dotNEt but without success.
References of this DLL:
-envdte
-Microsoft.Build
-Microsoft.CSharp
-System
-System.Core
-System.Data
-System.Data.DataSetExtensions
-System.Data.Entity
-System.Data.Entity.Design
-System.Runtime.Serialization
-System.Security
-System.Xml
-System.Xml.Linq
To refresh, my errors came up when I've added a new dll. Just after that I unloaded it in order to come back in a normal mode.
This errors keep going on.
I still working on,
In the same time, I created a small project with the same content in order to know if it was coming from my code.
And it works, therefore it's not my code.
Weird error....
|
|
|
|
|
Do you need more details?
I think with this it's enough.
I keep seeking without success.
I really need of your help guys,
Thx by advance
|
|
|
|
|
Sorry, but this looks like an ASP.NET issue, I suggest you try that forum.
I must get a clever new signature for 2011.
|
|
|
|
|
It's not. That's the way that T4 templates look.
|
|
|
|
|
Thanks, something else for me to get to grips with; I think not!
I must get a clever new signature for 2011.
|
|
|
|
|
Actually, they are really powerful, and very useful for mapping out boiler plate code. Colin Eberhart posted an excellent example here[^] on Code Project.
|
|
|
|
|
Thanks, once I get to grips with WPF properly I'll have a closer look.
I must get a clever new signature for 2011.
|
|
|
|
|
Let me correct those downvotes. I'm not sure who thought this part of the thread should be downvoted, but I bet I can compensate for them.
|
|
|
|
|
Thanks again, I returned the compliment. I do wonder at the mentality of some of the people who visit this site.
I must get a clever new signature for 2011.
|
|
|
|
|
Did you get your issue resolved? I think you need to right click on references, click add, click extensions and scroll down to the assembly with the classes you need. Also after you build open the bin directory and make sure that assembly is in the directory.
I assume you are trying to create an app that uses the templates outside of visual studio?
|
|
|
|
|
Still not resolved.
So far once my code is generated I remove the code inside my template.
As I said in my first post the assembly required is VisualStudio.
Error 1 The type or namespace 'VisualStudio' doesn't exist in the namespace 'Microsoft' ( an assembly is missing ?)
I check several time but there is nothing looking like.
Although the errors target on my template, I almost assume that it's not coming from there because It was working before.
Below my template perhaps there is something obvious:
<#@ template language="C#" debug="true" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#><#
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);
string inputFile = @"..\..\ModelEntities.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string ModelNamespace = loader.GetModelNamespace(inputFile);
string namespaceName = code.VsNamespaceSuggestion();
EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);
WriteHeader(fileManager);
BeginNamespace(namespaceName, code);
WriteCustomObservableCollection();
EndNamespace(namespaceName);
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(entity.Name + "Repository.cs");
BeginNamespace(namespaceName, code);
bool entityHasNullableFKs = entity.NavigationProperties.Any(np => np.GetDependentProperties().Any(p=>ef.IsNullable(p)));
#>
<#=Accessibility.ForType(entity)#> <#=code.SpaceAfter(code.AbstractOption(entity))#>class <#=code.Escape(entity)#>Repository<#=code.StringBefore(" : ", code.Escape(entity.BaseType))#> : I<#=code.Escape(entity)#>Repository
{
IRepository<<#=code.Escape(entity)#>> repo = new Repository<<#=code.Escape(entity)#>>();
public <#=code.Escape(entity)#> Create(<#=code.Escape(entity)#> entity)
{
return repo.Create(entity);
}
public <#=code.Escape(entity)#>[] CreateAll(<#=code.Escape(entity)#>[] entities)
{
return repo.CreateAll(entities);
}
public <#=code.Escape(entity)#> Update(<#=code.Escape(entity)#> entity)
{
return repo.Update(entity);
}
public <#=code.Escape(entity)#>[] UpdateAll(<#=code.Escape(entity)#>[] entities)
{
return repo.UpdateAll(entities);
}
public <#=code.Escape(entity)#> Delete(<#=code.Escape(entity)#> entity)
{
return repo.Delete(entity);
}
public IEnumerable<<#=code.Escape(entity)#>> Query(System.Linq.Expressions.Expression<Func<<#=code.Escape(entity)#>, bool>> filter)
{
return repo.Query(filter);
}
public <#=code.Escape(entity)#> Single(Func<<#=code.Escape(entity)#>, bool> predicate)
{
return repo.Single(predicate);
}
public <#=code.Escape(entity)#> First(Func<<#=code.Escape(entity)#>, bool> predicate)
{
return repo.First(predicate);
}
public void DeleteAll(Func<<#=code.Escape(entity)#>, bool> predicate)
{
repo.DeleteAll(predicate);
}
public IEnumerable<<#=code.Escape(entity)#>> Find(Func<<#=code.Escape(entity)#>, bool> predicate)
{
return repo.Find(predicate);
}
public IEnumerable<<#=code.Escape(entity)#>> GetAll()
{
return repo.GetAll();
}
}
<#
EndNamespace(namespaceName);
}
foreach (ComplexType complex in ItemCollection.GetItems<ComplexType>().OrderBy(e => e.Name))
{
fileManager.StartNewFile(complex.Name + ".cs");
BeginNamespace(namespaceName, code);
#>
<#=Accessibility.ForType(complex)#> partial class <#=code.Escape(complex)#>
{
<#
region.Begin("Primitive Properties");
foreach(EdmProperty edmProperty in complex.Properties.Where(p => p.TypeUsage.EdmType is PrimitiveType && p.DeclaringType == complex))
{
bool isDefaultValueDefinedInModel = (edmProperty.DefaultValue != null);
#>
<#=Accessibility.ForProperty(edmProperty)#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
<#
if (isDefaultValueDefinedInModel)
{
#>
{
<#=code.SpaceAfter(Accessibility.ForGetter(edmProperty))#>get { return <#=code.FieldName(edmProperty)#>; }
<#=code.SpaceAfter(Accessibility.ForSetter(edmProperty))#>set { <#=code.FieldName(edmProperty)#> = value; }
}
private <#=code.Escape(edmProperty.TypeUsage)#> <#=code.FieldName(edmProperty)#><#=code.StringBefore(" = ", code.CreateLiteral(edmProperty.DefaultValue))#>;
<#
}
else
{
#>
{
<#=code.SpaceAfter(Accessibility.ForGetter(edmProperty))#>get;
<#=code.SpaceAfter(Accessibility.ForSetter(edmProperty))#>set;
}
<#
}
}
region.End();
region.Begin("Complex Properties");
foreach(EdmProperty edmProperty in complex.Properties.Where(p => p.TypeUsage.EdmType is ComplexType && p.DeclaringType == complex))
{
#>
<#=Accessibility.ForProperty(edmProperty)#> <#=code.Escape(edmProperty.TypeUsage)#> <#=code.Escape(edmProperty)#>
{
<#=code.SpaceAfter(Accessibility.ForGetter(edmProperty))#>get { return <#=code.FieldName(edmProperty)#>; }
<#=code.SpaceAfter(Accessibility.ForSetter(edmProperty))#>set { <#=code.FieldName(edmProperty)#> = value; }
}
private <#=code.Escape(edmProperty.TypeUsage)#> <#=code.FieldName(edmProperty)#> = new <#=code.Escape(edmProperty.TypeUsage)#>();
<#
}
region.End();
#>
}
<#
EndNamespace(namespaceName);
}
if (!VerifyTypesAreCaseInsensitiveUnique(ItemCollection))
{
return "";
}
fileManager.Process();
#>
<#+
void WriteHeader(EntityFrameworkTemplateFileManager fileManager, params string[] extraUsings)
{
fileManager.StartHeader();
#>
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq.Expressions;
using CJI.FOX.DataLayer.Repository.Interface;
<#=String.Join(String.Empty, extraUsings.Select(u => "using " + u + ";" + Environment.NewLine).ToArray())#>
<#+
fileManager.EndBlock();
}
void BeginNamespace(string namespaceName, CodeGenerationTools code)
{
CodeRegion region = new CodeRegion(this);
if (!String.IsNullOrEmpty(namespaceName))
{
#>
namespace <#=code.EscapeNamespace(namespaceName)#>
{
<#+
PushIndent(CodeRegion.GetIndent(1));
}
}
void EndNamespace(string namespaceName)
{
if (!String.IsNullOrEmpty(namespaceName))
{
PopIndent();
#>
}
<#+
}
}
bool IsReadWriteAccessibleProperty(EdmMember member)
{
string setter = Accessibility.ForWriteOnlyProperty(member);
string getter = Accessibility.ForReadOnlyProperty(member);
return getter != "private" && getter != "protected" && setter != "private" && setter != "protected";
}
string PropertyVirtualModifier(string accessibility)
{
return accessibility + (accessibility != "private" ? " virtual" : "");
}
void WriteCustomObservableCollection()
{
#>
<#+
}
bool VerifyTypesAreCaseInsensitiveUnique(EdmItemCollection itemCollection)
{
Dictionary<string, bool> alreadySeen = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);
foreach(StructuralType type in itemCollection.GetItems<StructuralType>())
{
if (!(type is EntityType || type is ComplexType))
{
continue;
}
if (alreadySeen.ContainsKey(type.FullName))
{
Error(String.Format(CultureInfo.CurrentCulture, "This template does not support types that differ only by case, the types {0} are not supported", type.FullName));
return false;
}
else
{
alreadySeen.Add(type.FullName, true);
}
}
return true;
}
#>
|
|
|
|
|
Hi guys what zup ????
i have a big problem with thread and xml......i'm trying to write in a xml file from thread so i created a class i called them "Xmlwriter"
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace xmlWriter_test
{
class Xmlwriter
{
public XmlTextWriter txtWriter { get; set; }
public string xmlPath { get; set; }
public Object thislock = new Object();
public Xmlwriter(string path)
{
xmlPath = path;
txtWriter = new XmlTextWriter(path, null);
}
public void writeElement(string element, string data)
{
try
{
lock (thislock)
{
txtWriter.WriteStartElement(element);
txtWriter.WriteString(data);
txtWriter.WriteEndElement();
Console.WriteLine("good job !!");
}
}
catch (InvalidOperationException e)
{
Console.WriteLine("erreur :" + e.Message);
}
}
public void startDocument()
{
txtWriter.WriteStartDocument();
}
public void endDocument()
{
try
{
txtWriter.WriteEndDocument();
}
catch (ArgumentException arg)
{ Console.WriteLine("erreur :" + arg.Message); }
}
public void closeDocument()
{
txtWriter.Close();
}
}
}
and this is my Main class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Data.OleDb;
using System.Data;
using System.Threading;
namespace xmlWriter_test
{
class Program
{
static int i = 0;
static Xmlwriter wifixmlWriter = new Xmlwriter(@"D:\wifi_test.xml");
static void Main(string[] args)
{
wifixmlWriter.startDocument();
Thread th = new Thread(new ThreadStart(background));
Console.WriteLine("starting thread...");
th.Start();
th.Join();
wifixmlWriter.endDocument();
Console.WriteLine("press any key to quit");
Console.ReadKey();
}
static public void background()
{
while (i<50)
{
Console.WriteLine("i = {0}", i++);
wifixmlWriter.writeElement("hello", "i = " + i);
}
}
}
}
that's work for the first iteration and bug after that xD i don't know why .....
and here is what i get at the end ^^
le jeton StartElement dans l'état Error générera un document XML non valid
in english = " the startElement generate an invalid XML document !!!!!!
thx fr help
|
|
|
|
|
I'll get round to looking at your code, but there are about 173 items ahead of it in my priority list: Yours is just after "pick my nose" and "shave the cat".
Real men don't use instructions. They are only the manufacturers opinion on how to put the thing together.
Manfred R. Bihy: "Looks as if OP is learning resistant."
|
|
|
|
|
I must get a clever new signature for 2011.
|
|
|
|