Filed under: .NeT 2008
Nisan 28th, 2011
Öncelikle elinizde http://jena.sourceforge.net/downloads.html adresinden indirilmiş olan jena-2.6.4.jar (Farklı bir versiyon olabilir) dosyasının olduğunu varsayıyorum. Bu makaleyi yazdığım sırada Jena’nın .NeT versiyonunu linki kırık durumdaydı. Bu yüzden farklı bir yol izlemek zorunda kaldım.
Daha sonra aşağıdaki linkten, jar ve java dosyalarını .net e çevirmek için kullanılan güzel bir uygulama indiriyoruz bilgisayarımıza. IKVM.NET
Link : http://www.ikvm.net/download.html
Bu iki uygulamayı zipden çıkardıktan sonra, ikvm klasöründeki \ikvmbin-0.46.0.1\bin klasörüne Jar dosyasını kopyalıyoruz. Bu işlem işimizi biraz kolaylaştırmak içindi
Sonrasında Command Prompt u açıp, ikvmbin-0.46.0.1\bin klasörüne gidiyoruz. Burada aşağıdaki komutu çalıştırıyoruz.
ikvmc -target:library jena-2.6.4.jar

Program aşağıdaki gibi jar dosyasını dll e çevirecektir. Bu komut sonrasında jena-2.6.4.dll dosyasını elde ediyoruz. Bu dosyayı istediğimiz bir .net projesine referans olarak ekleyip kullanabiliriz.

Söylemeden geçmeyeyim, bu işlem ile javada yazılmış olan tüm uygulamaları dll e çevirebili ve .net projelerinde kullanabilirsiniz.
Tags: .NeT, .NeT 2010, Çevrim, jar to dll, java, Jena.NeT
Posted in .NeT 2008, Yazılım | 2 Comments »
Mart 22nd, 2011
XML dosyalarından XSD şemaları üretmek istediğinizde, Command Promptan, xsd.exe (XML Schema Definition Tool) uygulamasını kullanabilirsiniz. Bunun ile ilgili bir yazı yazmıştım yanlış hatırlamıyorsam. Fakat dinamik olarak şemalar üretmek istediğinizde veya uygulamanıza bu şemaları ürettirmek istediğinizde cmd den komut yazıp, xsd.exe yi kullanmanız uygun olmayacaktır. Bunun yerine aşağıdaki metodu kullanabilirsiniz.
private void GenerateSchema(string filePath)
{
var reader = XmlReader.Create(filePath);
var schema = new XmlSchemaInference();
var schemaSet = schema.InferSchema(reader);
TextWriter writeFile = new StreamWriter("c:\\schema.xsd");
foreach (XmlSchema s in schemaSet.Schemas())
{
s.Write(writeFile);
}
writeFile.Close();
}
Tags: .NeT, c#, cmd, cmd.exe, Generate Schema, Schema Generator, VS, vs.net, XSD, xsd.exe
Posted in .NeT 2008, BizTalk, Yazılım | No Comments »
Mart 4th, 2011
Hazırladığınız uygulamada outlooku kullanarak mail göndermek istiyorsanız öncelikle “Microsoft Outlook 14.0 Object Library” i referans olarak eklemeniz gerekmektedir. 14.0 bilgisayarınızda kurulmuş olan office versiyonudur. Bu rakam değişiklik gösterebilir.

Daha sonra usinglerimize aşağıdaki satırı ilave ediyoruz. Böylece uzun uzun namespaceleri yazmamıza gerek kalmadan Outlook diyerek tüm metodları kullanabiliriz.
using Outlook = Microsoft.Office.Interop.Outlook;
Daha sonra aşağıdaki basit olarak hazırlanmış olan metodu kullanıp şekillendirerek mail gönderimi yaptırabilirsiniz.
private void SendOutlookMail()
{
try
{
Outlook.Application oApp = new Outlook.Application();
Outlook.MailItem oMsg = (Outlook.MailItem)oApp.CreateItem(Outlook.OlItemType.olMailItem);
oMsg.To = "To Mail Adresleri";
oMsg.CC = "CC deki Mail Adresleri";
oMsg.BCC = "BCC deki Mail Adresleri";
oMsg.Recipients.ResolveAll();
oMsg.Subject = "Mailin Subjecti";
oMsg.Body = "Mailin İçeriği";
//Aşağıdaki satırları attachment göndermek istiyorsanız kullanabilirsiniz. İstemiyorsanız bunlara gerek yok
String sSource = "C:\\xyz.xlsx";
String sDisplayName = "Görünen Dosya İsmi";
int iPosition = (int)oMsg.Body.Length + 1;
int iAttachType = (int)Outlook.OlAttachmentType.olByValue;
Outlook.Attachment oAttach = oMsg.Attachments.Add(sSource, iAttachType, iPosition, sDisplayName);
//Mail gönderilmeden önce kullanıcıya değişiklik yapmak için imkan tanınıyor
oMsg.Display(true);
oAttach = null;
oMsg = null;
oApp = null;
}
catch (Exception e)
{
MessageBox.Show("Hata Oluştu", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
Tags: .NeT, .NeT 2010, c#, Interop, Mail Gönderme, Outlook, SendMail, vs.net
Posted in .NeT 2008, Sistem, Yazılım | 2 Comments »
Mart 4th, 2011
Çalışan uygulamanın, exesinin bulunduğu klasörü aşağıdaki şekilde bulabilirsiniz.
using System.IO;
using System.Windows.Forms;
string appPath = Path.GetDirectoryName(Application.ExecutablePath);
Tags: .NeT, .NeT 2010, Application Path, c#, Executable Path, vs.net, Work DIR
Posted in .NeT 2008, Yazılım | No Comments »
Mart 4th, 2011
Bir datatable’ın Column.DataType propertysini aşağıdaki gibi belirleyebilirsiniz.
String
DataColumn colString = new DataColumn(“StringCol”);
colString.DataType = System.Type.GetType(“System.String”);
myTable.Columns.Add(colString);
Int32
DataColumn colInt32 = new DataColumn(“Int32Col”);
colInt32.DataType = System.Type.GetType(“System.Int32″);
myTable.Columns.Add(colInt32);
Boolean
DataColumn colBoolean = new DataColumn(“BooleanCol”);
colBoolean.DataType = System.Type.GetType(“System.Boolean”);
myTable.Columns.Add(colBoolean);
TimeSpan
DataColumn colTimeSpan = new DataColumn(“TimeSpanCol”);
colTimeSpan.DataType = System.Type.GetType(“System.TimeSpan”);
myTable.Columns.Add(colTimeSpan);
DateTime
DataColumn colDateTime = new DataColumn(“DateTimeCol”);
colDateTime.DataType = System.Type.GetType(“System.DateTime”);
myTable.Columns.Add(colDateTime);
Decimal
DataColumn colDecimal = new DataColumn(“DecimalCol”);
colDecimal.DataType = System.Type.GetType(“System.Decimal”);
myTable.Columns.Add(colDecimal);
Tags: .NeT, .NeT 2010, Column, Datatable, DataType, vs.net
Posted in .NeT 2008, Yazılım | No Comments »
Aralık 6th, 2010
string UppercaseWords(string value)
{
char[] array = value.ToLower().ToCharArray();
if (array.Length >= 1)
{
if (char.IsLower(array[0]))
{
array[0] = char.ToUpper(array[0]);
}
}
for (int i = 1; i < array.Length; i++)
{
if (array[i - 1] == ' ')
{
if (char.IsLower(array[i]))
{
array[i] = char.ToUpper(array[i]);
}
}
}
return new string(array);
}
Tags: .NeT, c#, Function, LowerCase, Method, UpperCase, Visual Studio, VS
Posted in .NeT 2008, Yazılım | No Comments »
Ekim 2nd, 2010
Daha detaylı ve görkemli Remote Desktop uygulamaları geliştirmek istiyorsanız bu dll i mutlaka kullanmanız gerekecektir. Bir yere kadar Command Promp üzerinden mstsc ye komut göndererek işlemlerinizi yapabiliyorsunuz. Fakat orada tıkanacağınız aşikar
İlk önce mstscax.dll i bulmanız gerekiyor. Bunu google da aratınca bir sürü siteden indirmeniz mümkün. Bulmakta sıkıntı yaşarsanız bana ulaşın ben mail ile gönderirim.
Daha sonra bu dll i register etmeniz gerekiyor. Bunu Command Prompta
RegSvr32 C:\..\dizin\..\mstscax.dll
yazarak yapabilirsiniz. Aşağıdaki resimde ekran görüntüsünü görebilirsiniz.

Daha sonra Visual Studio ya geliyoruz. Toolbox üzerine sağ tıklayıp Choose Items… A tıklıyoruz.

Açılan ekranda, COM Components tabından, Microsoft RDP Client Control componentlerinden en yeni olanı seçip, OK butonuna tıklıyoruz. Bu işlem sonrasında Toolboxınıza ilgili komponent eklenmiş olacaktır.

Örnek olarak componenti aşağıdaki gibi kullanabilirsiniz.
Örnek Kullanım:
rdpClient.Server = “Server Adınız”;
rdpClient.UserName = “Kullanıcı Adı”;
rdpClient.AdvancedSettings2.ClearTextPassword = “Şifreniz”;
rdpClient.ColorDepth = integer; //8, 15, 16 ya da 24 seçilebilir
rdpClient.DesktopWidth = integer; //genişlik
rdpClient.DesktopHeight = integer; //boy
rdpClient.FullScreen = boolean; //True ya da False seçilebilir.
//ayarlar set edildikten sonra Connect metoduyla servera bağlanıyoruz.
rdpClient.Connect();
Dikkatli Kullanın
Tags: .NeT, c#, command, command prompt, Microsoft, Microsoft RDP Client Control, MSTSCAX.DLL, RDP, RegSvr32, Remote, Remote Desktop, Uzak, Uzak Masaüstü, vs.net
Posted in .NeT 2008, Bilgisayar, Yazılım | 7 Comments »
Ağustos 21st, 2010
Bildiğiniz gibi, bir dll geliştirilirken, eğer imza eklenmezse, bu dll daha sonrasında GAC a (assembly e) atılamazlar. Kullanmanız gereken bir dll bulduğunuz da veya size başka bir yerden gönderildiğinde, geri dönüş yapıp, buna lütfen snk ekleyin demek de pek hoş olmaz zannımca.
Eğer böyle bir durumdaysanız, birazdan anlatacağım yöntemi kullanabilirsiniz;
Not: Aşağıda yazdıklarım sadece Visual Studio Command Prompt da çalışmaktadırlar. Normal CMD de boşuna uğraşmayın
Örneğin ; DLL imizin ismi Test.dll olsun.
- Assemblyimizi Dis-Assemble ediyoruz.
İldasm Test.dll /out:Test.il
-
Strong Name Key ekleyip tekrardan Re-Assemble ediyoruz.
İlasm Test.il /res:Test.res /dll /key:Test.snk /out:YeniTest.dll
Ve elimizde imzalı bir dll olmuş oldu…
Strong Name i doğrulamak için aşağıdaki komutu kullanabilirsiniz.
Sn -vf YeniTest.dll
Tags: cmd, command prompt, DLL, ildasm, sn, snk, SNK Ekleme, Strong Name, Visual Studio, Visual Studio Command Prompt
Posted in .NeT 2008, Bilgisayar, BizTalk, Sharepoint | No Comments »
Şubat 25th, 2010
Biztalk Administration Console olmadan, DB ye bakmak suretiyle Biztalk dan gelip geçen mesajları görmeniz pek mümkün olmamaktadır.
DB’yi ne kadar kurcalarsanız kurcalayın, Table lardaki bilgilerin (TrackingDB deki) anlamsız (okunamaz) durumda olduğunu göreceksiniz.
Peki Örneğin Bir Web Service veya Bir Web Sayfasında, Biztalk Server üzerinden gelip geçen mesajları ve mesajların içeriklerini nasıl gösterebiliriz?
Kullanabileceğiniz Metodlar Şöyle :
usings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
using Operations = Microsoft.BizTalk.Operations;
using Microsoft.BizTalk.Message.Interop;
using System.IO;
using System.Globalization;
using System.Collections.ObjectModel;
Altı çizili olan dll leri Biztalk un kurulduğu dizin içerisinde bulabilirsiniz;
Definitions;
private string TrackingServer = "Biztalk SQL Server";
private string TrackingDB = "DTA DB";
Biztalk SQL Server : Biztalk Server ın DB sinin bulunduğu server (local vs olabilir).
DTA DB : Tracking DB nizin adı, değiştirmediyseniz BiztalkDTAdb olmalı.
GetServiceMessages Metodu;
public Collection<BTMsgInstance> GetServiceMessages(string ServiceInstanceId)
{
Collection<BTMsgInstance> collection = new Collection<BTMsgInstance>();
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Operations.MessageFlow flow = ops.GetMessageFlow(new Guid(ServiceInstanceId), tdb);
foreach (Operations.MessageEvent message in flow.MessageEvents)
{
BTMsgInstance instance = new BTMsgInstance
{
EndTime = message.RoutingDetails.Source.EndTime,
StartTime = message.RoutingDetails.Source.StartTime,
InstanceID= message.RoutingDetails.Source.InstanceID,
ErrorInfo = message.RoutingDetails.Source.ErrorInfo,
ExitCode = message.RoutingDetails.Source.ExitCode,
ServiceName = message.RoutingDetails.Source.ServiceName
};
collection.Add(instance);
}
return collection;
}
GetTrackedMessageData Metodu;
public string GetTrackedMessageData(string MessageInstanceId)
{
Operations.BizTalkOperations ops = new Microsoft.BizTalk.Operations.BizTalkOperations();
Operations.TrackingDatabase tdb = new Microsoft.BizTalk.Operations.TrackingDatabase(TrackingDB, TrackingServer);
Guid guid = new Guid(MessageInstanceId);
IBaseMessage trackedMessage = ops.GetTrackedMessage(guid);
IBaseMessagePart part = trackedMessage.BodyPart;
Stream stream = part.Data;
StreamReader reader = new StreamReader(stream);
return string.Format(CultureInfo.CurrentCulture, "0", new object[] { reader.ReadToEnd() });
}
Unutmadan yukarıdaki kodun çalışması için Biztalk Server üzerinde bir IIS’ e kurmanızı öneririm, zira kodlar yetki ile ilgili problemlerden dolayı çalışmayabilirler. Bu yüzden bu metodları bir web service olarak hazırlamanız en iyisi olacaktır. Daha sonra yapacağınız ayrı bir web uygulaması ile de bu metodları çağırıp gerekli bilgileri alabilirsiniz.
GetServiceMessages metodu, Bir servisin Instance ID sini input olarak alır ve BTMsgInstance sınıfında bir değişken döndürür. Bunun içinde EndTime, StartTime, InstaceID, ErrorInfo, ExitCode, ServiceName gibi bilgiler bulunmaktadır.
GetTracketMessageData metodu ise Message Instance ID si verilen bir mesajın içeriğini XML olarak bize döndürür.
Bu kadar bilgiden sonra lan olm iyi güzelde ServiceName ve ServiceInstanceID lerini nereden bulacam da bu metodlara gönderip sonuçları alacam diyebilirsiniz. Demelisiniz de
Onu da düşündüm, onu da anlatıcam size
ServiceName leri bulabilmek için aşağıdaki SQL i çalıştırıyoruz,
SELECT DISTINCT sf.[Service/Name] AS [Service Name]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL;
ServiceInstanceID leri bulabilmek için de aşağıdaki SQL e, ServiceName gönderiyoruz
SELECT sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/InstanceId] AS [Service Instance Id]
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] = '" + serviceName + "'
ORDER BY sf.[ServiceInstance/StartTime] DESC
Daha da detaylı bilgi gerekirse dtav_ServiceFacts tablosundaki verileri inceleyebilirsiniz.
Son 10 mesajın Bilgilerini getiren SQL;
SELECT TOP 10
sf.[ServiceInstance/InstanceId] AS [Service Instance Id],
sf.[Service/Name] AS [Service Name], sf.[ServiceInstance/State] AS [State] ,
dateadd(minute, 180, sf.[ServiceInstance/StartTime]) AS [Start Time],
dateadd(minute, 180, sf.[ServiceInstance/EndTime]) AS [End Time],
sf.[ServiceInstance/Duration] AS [Duration],
sf.[ServiceInstance/ExitCode] AS [Error Code],
FROM [dtav_ServiceFacts] sf
WHERE sf.[Service/Name] IS NOT NULL
AND sf.[Service/Type]='Orchestration'
ORDER BY [Start Time] DESC
Tags: BizTalk, Biztalk 2009, BizTalk Administration, Biztalk Administration Console, BTMsgInstance, BTS, BTS 2009, DTADB, Service Messages, ServiceInstanceID, ServiceName, Tracked Message, web service
Posted in .NeT 2008, Bilgisayar, BizTalk | 2 Comments »
Şubat 25th, 2010
Bildiğiniz gibi tif dosyaları normal resim gibi gösterilememektedir. Biraz araştırma yaptıktan sonra çoğu sitede böyle bir imkanın olmadığını, sadece operanın böyle bir özelliğe sahip olduğunu ve tif dosyalarını gösterebildiğini gördüm;
Yanlış
Yapmanız gerekenler ;
- Aşağıdaki linkten, tifleri görüntüleyebilmek için alternatiff adlı plugini indiriyoruz,
link : http://www.alternatiff.com/distribution
- Sıkıştırılmış dosyanın içindeki install.bat dosyasını çalıştırarak ocx dosyasını register ediyoruz,

- Daha sonra ise, aşağıdaki kodu kullanarak sayfada gösterimi sağlayabilirsiniz
<object width=200 height=200
classid="CLSID:106E49CF-797A-11D2-81A2-00E02C015623">
<param name="src" value="tiffdocument.tif">
<param name="negative" value="yes">
</object>
Tags: How To, tif, tiff, tiff in html, tiff view
Posted in .NeT 2008, Yazılım | No Comments »