Filed under: .NeT 2008

Jena, .NeT Uygulamalarında Nasıl Kullanılır?

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: , , , , ,
Posted in .NeT 2008, Yazılım | 2 Comments »

How To : Generate XSD From XML File in C#

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();
        }

Gelen Aramalar:

  • CS0234 C# The type or namespace name Resources does not exist in the namespace (are you missing an assembly reference?)
  • CS0234 C# The type or namespace name does not exist in the namespace (are you missing an assembly reference?)
  • CS0234 C# The type or namespace name Office does not exist in the namespace Microsoft (are you missing an assembly reference?)
  • CS0234 C# The type or namespace name does not exist in the namespace System Configuration (are you missing an assembly reference?)

Tags: , , , , , , , , ,
Posted in .NeT 2008, BizTalk, Yazılım | No Comments »

C# da Outlook ile Mail Gönderme

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);
            }
        }

Gelen Aramalar:

  • c# outlook mail gönderme
  • c# outlook
  • c# toplu mail gönderme
  • c# sharp toplu mail gönderme
  • c# mail gönderme
  • c# sharp sms gönderme
  • outlookta toplu mail gnderme
  • anything

Tags: , , , , , , ,
Posted in .NeT 2008, Sistem, Yazılım | 5 Comments »

C# da Çalışan Uygulamanın Klasörünü Bulma

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: , , , , , ,
Posted in .NeT 2008, Yazılım | No Comments »

DataTable da Sütunun DataType’ını Belirleme

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: , , , , ,
Posted in .NeT 2008, Yazılım | No Comments »

Cümlenin İlk Harflerini Büyüten Metod

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: , , , , , , ,
Posted in .NeT 2008, Yazılım | No Comments »

MSTSCAX.DLL Nasıl Kullanılır?

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 🙂

Gelen Aramalar:

  • dll cmd nasıl kullanılır

Tags: , , , , , , , , , , , , ,
Posted in .NeT 2008, Bilgisayar, Yazılım | 7 Comments »

Source u Elimizde Olmayan DLL lere Strong Name Ekleme (İmzalama, SNK Ekleme)

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.

  1. Assemblyimizi Dis-Assemble ediyoruz.

    İldasm Test.dll /out:Test.il

  2. 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: , , , , , , , , ,
Posted in .NeT 2008, Bilgisayar, BizTalk, Sharepoint | No Comments »

BizTalk Server Tracking Database’i Kod İle Sorgulamak

Ş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

Gelen Aramalar:

  • mehmet aydın vep no

Tags: , , , , , , , , , , , ,
Posted in .NeT 2008, Bilgisayar, BizTalk | 2 Comments »

HTML de TIF (TIFF) gösterimi

Ş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 ;

  1. Aşağıdaki linkten, tifleri görüntüleyebilmek için alternatiff adlı plugini indiriyoruz,
    link : http://www.alternatiff.com/distribution
  2. Sıkıştırılmış dosyanın içindeki install.bat dosyasını çalıştırarak ocx dosyasını register ediyoruz,
  3. Daha sonra ise, aşağıdaki kodu kullanarak sayfada gösterimi sağlayabilirsiniz
  4. <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: , , , ,
Posted in .NeT 2008, Yazılım | No Comments »