Tags: , | Categories: Hata, IDE, Tip Posted by okutbay on 14.10.2011 00:01 | Yorumlar (0)

Geçen hafta içinde yeni bir proje ekibine dahil oldum. Proje oldukça heyecanlı bir proje ama her zaman olduğu gibi bitiş tarihi belli, ne istendiği kabaca belli ama detaylar bize kalıyor... :D Ama bu yazımda bu konuyla ilgili bişiler olmayacak. Yeni projeyle beraber yaşadığım bir sorunu ve çözümünü anlatmaya çalışacağım.

 .NET frameworkü ilk versiyonundan beri kullanırım, Visual studio ise Visual Interdev zamanlarindan bu yana aktif kullandığım bir ürün. Hafta başında sıkıştırılmış olarak kaynak kodları ve veritabanı yedeği teslim aldım. Bir şekilde bunları çalıştırıp proje hakkında fikir sahibi olmam gerekiyordu.

Hemen veritabanı yedeğini yerel olarak bilgisayarımda buluna sql sunucusuna açtım. Oh mis. Sonra her developer gidi neymiş şu proje bağlantı cümlesini düzenliyip bakayım diye .sln dosyasına tıkladım... Ama karşıma bir mesaj çıktı... 

The project file "x" cannot be opened. Project type is not supported by this installation.

Dosya VS 2008 .sln dosyasıydı ve bu mesaj genelde VS 2005 ile web application destek güncellemesi kurulu olmadığında o biçimde yaratılmış projeleri açmaya çalıştığımızda almaya alışık olduğumuz mesajlardandı.

"Allah, Allah, çok ilginç..." diyerek dosyayı gönderen arkadaşı sorayım dedim. Developerı ortada olmayan ve bilgi alınma şansı kalmamış bir proje olduğunu söyledikten sonra "silverlight 2.0 projesi olması lazım" dedi...

Gel gelelim ben de zaten bi sürü silverlight SDK hödösü kuruluydu. Ufak bir googledan sonra Microsoft® Silverlight™ 2 Tools for "Visual Studio 2008 SP1" kurmam gerektiğini öğrendim... Ohhh dedim şimdi işin yoksa "Microsoft Visual Studio 2008 Service Pack 1" kur bi de diye hayıflandım... SP1 i kurdum sonra silverlight toolsu kurayım dedim. Ama ne mümkün. fatal error verip kurulumu kesiyordu. Sonra öğrendim ki ne kadar silverlight hedesi varsa kaldırıp öyle kurmak gerekiyormuş... SP1 kurucam diye hayıflandığıma çok pişman olmuştum... Sen miydin hayıflanan, al sana demişti şakacı bir kişilik. Uzun lafın kısası bir şekilde kurduk ve .sln dosyasını açtığımda başta yükleyemediğim 5 projeden 3ünü yüklemeyi başarabilmiştim.

Şekil 1: Başarıyla yüklenen 3 proje. 

Ama hala 2 proje saçma şekilde yüklenmiyordu.

 

Şekil 2: Proje yüklenme hatası.

"Ne ulan bu projeler" diye bir text editör ile proje dosyasına bakarak tiplerini anlamayı düşündüm. Tabi adamlar guid tutmuşlar ve bişi almadım. Nedir bunlar diye aradım ve proje tipleri normal şartlarda sahip olduğum kurulumun açması gereken cinstendi.

 

PlantDoctorDataServices.csproj

{349c5851-65df-11da-9384-00065b846f21};{fae04ec0-301f-11d3-bf4b-00c04f79efbc}

PlantDoctorWebPart.csproj

{593B0543-81F6-4436-BA1E-4747859CAAE2};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 

 

Not: Ulaştığım tablo gayet faydalı bir tablo. Buraya da koyayım lazım olur sonra

Project Type Description Project Type Guid
Windows (C#) {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
Windows (VB.NET) {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
Windows (Visual C++) {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}
Web Application {349C5851-65DF-11DA-9384-00065B846F21}
Web Site {E24C65DC-7377-472B-9ABA-BC803B73C61A}
Distributed System {F135691A-BF7E-435D-8960-F99683D2D49C}
Windows Communication Foundation (WCF) {3D9AD99F-2412-4246-B90B-4EAA41C64699}
Windows Presentation Foundation (WPF) {60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}
Visual Database Tools {C252FEB5-A946-4202-B1D4-9916A0590387}
Database {A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}
Database (other project types) {4F174C21-8C12-11D0-8340-0000F80270F8}
Test {3AC096D0-A1C2-E12C-1390-A8335801FDAB}
Legacy (2003) Smart Device (C#) {20D4826A-C6FA-45DB-90F4-C717570B9F32}
Legacy (2003) Smart Device (VB.NET) {CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}
Smart Device (C#) {4D628B5B-2FBC-4AA6-8C16-197242AEB884}
Smart Device (VB.NET) {68B1623D-7FB9-47D8-8664-7ECEA3297D4F}
Workflow (C#) {14822709-B5A1-4724-98CA-57A101D1B079}
Workflow (VB.NET) {D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}
Deployment Merge Module {06A35CCD-C46D-44D5-987B-CF40FF872267}
Deployment Cab {3EA9E505-35AC-4774-B492-AD1749C4943A}
Deployment Setup {978C614F-708E-4E1A-B201-565925725DBA}
Deployment Smart Device Cab {AB322303-2255-48EF-A496-5904EB18DA55}
Visual Studio Tools for Applications (VSTA) {A860303F-1F3F-4691-B57E-529FC101A107}
Visual Studio Tools for Office (VSTO) {BAA0C2D2-18E2-41B9-852F-F413020CAA33}
SharePoint Workflow {F8810EC1-6754-47FC-A15F-DFABD2E3FA90}
XNA (Windows) {6D335F3A-9D43-41b4-9D22-F6F17C4BE596}
XNA (XBox) {2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}
XNA (Zune) {D399B71A-8929-442a-A9AC-8BEC78BB2433}
SharePoint (VB.NET) {EC05E597-79D4-47f3-ADA0-324C4F7C7484}
SharePoint (C#) {593B0543-81F6-4436-BA1E-4747859CAAE2}
Silverlight {A1591282-1198-4647-A2B1-27E5FF5F6F3B}

Kaynak: http://www.mztools.com/articles/2008/mz2008017.aspx

Proje tipinden bir sonuç çıkmayınca çaresizce hata mesajınını googleda arayıp alakalı olabilecek cevaplara bakmaya başladım. Kimin aklına gelirdi "<ProjectTypeGuids></ProjectTypeGuids>" tagleri arasında yazan guidleri silince projelerin yükleneceği. Benim de gelmezdi bir yerde okumasam. Sildim ve projeler şimdi yükleniyor... Patrona söylesen hayatta inanmaz böyle bişiye bir gün harcadığına... :D

Neyse projeleri yükledik ama bakalım derlenecek mi? %99 derlenmeyecek. Ama şu an mutluyum...  

 

  

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 29.09.2009 21:46 | Yorumlar (0)

You can add the <location> element with the “inheritInChildApplications” attribute to the root web.config. This attribute will prevent child applications inherit some specified configuration from the root web.config.

The attribute must be placed in the <configuration> section of the web.config. It looks like this:
<location path="." inheritInChildApplications="false">
<system.web>
 <!--
     ……
     Your settings

  -->
</system.web >
</location>

Referance:

SectionInformation.InheritInChildApplications Property

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Categories: IDE, Programlama, SSS (FAQ), Tip Posted by okutbay on 11.09.2009 10:35 | Yorumlar (0)

While we are coding we used to delete blank lines with 'Shift + Del'. Shift + Del shortcut is same as 'Ctrl + X'. And if you copy something to clipboard before cutting the blank lines, it will be replaced by the blank line.

You can change this behaviour with VS 2008 settings. Tools > Option > Text Editor > All Languages (or just for specific language) > Uncheck 'Apply Cut or Copy commands to blank lines when there is no selection'



Happy coding...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , | Categories: Genel, Programlama Posted by okutbay on 08.09.2009 09:45 | Yorumlar (0)

JSON stands for Javascript Object Notation and this is the new lightweight (then XML) standart for transferring data from one point to another over the network.  Here you can find a sample web page codebehind to see usage in C#.

 

    1 namespace Prototype

    2 {

    3     public partial class Json : System.Web.UI.Page

    4     {

    5         protected void Page_Load(object sender, EventArgs e)

    6         {

    7             //create instance of the object

    8             SampleObject sampleObject = new SampleObject();

    9 

   10             //Json Serialize

   11             string json = Functions.ToJson<SampleObject>(sampleObject);

   12 

   13             Response.Write(string.Format("Json result: {0}<br/>",Server.HtmlEncode(json)));

   14 

   15             SampleObject deserializedSampleObject = Functions.FromJson<SampleObject>(json);//Json Deserialize

   16             Response.Write(string.Format("Object Result: {0}<br/>", deserializedSampleObject.ToString()));

   17 

   18         }

   19     }

   20 

   21     [Serializable]

   22     public class SampleObject

   23     {

   24         public int Id { get; set; }

   25         public string Name { get; set; }

   26         public string Surname { get; set; }

   27         public string EMail { get; set; }

   28 

   29         public SampleObject()

   30         {

   31             this.Id = 2345;

   32             this.Name = "Ozan K.";

   33             this.Surname = "BAYRAM";

   34             this.EMail = "xyz@abc.com";

   35         }

   36 

   37         public override string ToString()

   38         {

   39             return string.Format("{0} {1}", Name, Surname);

   40         }

   41     }

   42 }

Static methods in 'Functions' class

 

    1 /// <summary>

    2 /// Serializes to Json string

    3 /// Class must be serializable

    4 /// </summary>

    5 /// <typeparam name="T"></typeparam>

    6 /// <param name="ObjectToSerialize"></param>

    7 /// <returns>json string</returns>

    8 public static string ToJson<T>(object ObjectToSerialize)

    9 {

   10     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

   11     MemoryStream ms = new MemoryStream();

   12     ser.WriteObject(ms, ObjectToSerialize);

   13 

   14     string json = Encoding.Default.GetString(ms.ToArray());

   15     ms.Close();

   16 

   17     return json;

   18 

   19 }

   20 

   21 /// <summary>

   22 /// Deserializes json string to object

   23 /// </summary>

   24 /// <typeparam name="T"></typeparam>

   25 /// <param name="JsonString"></param>

   26 /// <returns></returns>

   27 public static T FromJson<T>(string JsonString)

   28 {

   29     MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(JsonString));

   30 

   31     DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

   32     T returnObject = (T)ser.ReadObject(ms);

   33     ms.Close();

   34 

   35     return returnObject;

   36 }

Happy codings...

2 kişi tarafından 1.5 olarak değerlendirildi

  • Currently 1,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Tip, Web Uygulaması Posted by okutbay on 08.09.2009 09:27 | Yorumlar (0)

When you are using the SiteMapPath control page Urls with the querystrings, pages don't show the control. Because url can't be matched with url in your Web.Sitemap file.

To handle this situation, a little web.sitemap file trick is enough. Write the static part of your Url and define the dynamic querystring parameters at "reliantOn" attribute.

Sample Web.sitemap node definiton:

    1 <siteMapNode url="~/a.aspx?p=add" title="ABC" reliantOn="Id" />

Happy codings...

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , | Categories: SSS (FAQ), Web Uygulaması Posted by okutbay on 24.08.2009 10:10 | Yorumlar (0)

We are developing a new ASP.NET web application in Visual studio 2008. Last week we've decided to use HttpHandlers instead of some web pages. And as we used to do in Visual Studio 2005 web sites created an App_code folder after that we created new classes under that folder.

Then we noticed that there is intellisense problem with these files. Also we noticed that there is a namespace problem with these classes.

When you add new class to app_code folder VS2008 names the class like this: RootNameSpace.App_Code.Class1. But object browser doesn't include any definition about App_Code namespace and sub classes.

 

figure 1: No namespace for ICFWeb.App_Code

 

  Then I decided to check the properties of the classes. Right clicked a class under the App_code folder. And select its properties.

figure 2: No intellisense and color highlighting for editor.

 

When we looked at the properties. We saw build action for class is set to "Content". Problems are fixed after i changed that property to "Compile"  

figure 3: Change build action from "Content" to "Compile"

 

After i searched the google for source of the problem. Problem is the app_code folder is for the web sites. There is no use of that folder for the web applications. Also app_code folder is not included in the "Add ASP.NET Folder" context menu of the solution explorer when you want to add App_code folder to your web application project.

Happy coding... 

 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Categories: IDE, Web Uygulaması Posted by okutbay on 23.06.2009 14:11 | Yorumlar (0)

Bir solution dosyası içinde birden fazla web projeniz var ise (hatta bunun sayısı çoksa) ve eğer ASP.NET Developmen server kullanıyorsanız sizi rahatsız edebilecek bir durum ortaya çıkar.

Her proje için çalışan geliştirme sunucusu hafızanızı gereksiz yere işgal edecektir. Oysa siz sadece tek bir web projesini o sırada görmeyi istemektesinizdir.

Bu durum düzeltmek için her bir web projesi için "Always Start When Debugging" varsayılan ayarı değiştirmeniz iyi bir başlangıç olur.

Sonrasında solution dosyanızın özelliklerinden start up project özelliğini current selection yapın. Böylece solution explorerda hangi web projenizde iseniz debug etmek istediğinizde sadece o projeye ait geliştirme sunucusu çalışacaktır.

Tabi çözümler bazen yan etkiler doğurabilirler. Current selection debug edilsin dediğiniz için class library gibi bir projede F5 yaparsanız hata mesajı alırsınız.

Bunu aşmak için yine solution özelliklerinden multiple startup project seçebilir ve F5 tuşuna basıldığında çalışmasını istediğiniz proje için action belirleyebilirsiniz. Bu işlemin kısayolu solution explorerdan ilgili projeye ters tıklayarak "Set as Startup project"demektir.

İyi çalışmalar.

 

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , | Categories: IDE, Tanıtım Posted by okutbay on 16.01.2009 12:34 | Yorumlar (0)

Blog yapan yazılımcının dostu araçlardan olan CSAH (Copy Source As Html) bir Visual Studio 2008 eklentisi...

Eklenti yazdığınız kodlar için html ve stilleri oluşturuyor. Böylece web sitenizde ekstra çaba sarfetmeden kaynak kodunuzu internette IDE'nizde göründüğü gibi sunabiliyorsunuz.

Eklentinin 3.0 versiyonu yayınlanmış. 2.0 da yapamadığımız HTML bölümde yer alan kodları alamıyorduk... Bu özellik yeni versiyonda eklenmiş... Kurulum bilgileri, kullanım ve eklentiyi indirmek için aşağıdaki bağlantıyı takip edebilirsiniz...

http://www.jtleigh.com/people/colin/software/CopySourceAsHtml/

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: | Categories: Hata, IDE, Web Uygulaması Posted by okutbay on 14.01.2009 19:02 | Yorumlar (0)

Son günlerde Visual Studio 2008 ile çalışırken can sıkıcı bir hata mesajı almaya başlamıştım...

Hata mesajı "Error connecting to undo manager of source file 'x.aspx.designer.cs' derken bu mesajı debug etmek istediğimde veriyor olması çok anlamsız geliyordu... Anlamsız geldiği için anlamsız bir çözüm geliştirdim... İlgili dosya bi şekilde bozuluyor varsayımı ile bu dosyanın IDE tarafından oluşturulan bir dosya olduğu gerçeğini birleştirerek adı geçen dosyayı sildim... Daha sonra ilgili .ASPX dosyasına Visual Studio 2008 IDE ile Solution Explorer da ters tıklarak "Convert to Web Application" dedim ve dosyanın tekrar oluşturulmasını sağladım... Ve sorun çözüldü... Arada bir tekrar ediyor ve çözümü tekrarlıyorum...

Dosya neden bozulur, nedenini tam anlasam çok rahatlayacağım... :)

1 kişi tarafından 5.0 olarak değerlendirildi

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Tags: , , , , , | Posted by okutbay on 13.10.2008 16:20 | Yorumlar (0)
C# dili 3.0 ile lambda fonsiyonları, LINQ, ve 3.5 versiyonuyla beraber anonim tipler gibi yeniliklerin yanında uzatım metodlarını da duyurdu. Bu yazımızda dilimiz döndüğünce bu metodları sizlere anlatmaya çalışacağım.. Adından da anlaşılacağı üzerine bu metolar mevcut tiplere (sınıflara) ilave olarak onların işlevlerini uzatan, genişleten metodlar diyebiliriz. Eğer siz bir sınıf geliştirmiş ve bunu bileşen olarak internet üzerinden insaların indirip uygulamalarında kullanmasını istiyorsanız bu bileşenin yanında dokümantasyonun da vermeniz gerekir. Böylece bileşeni kullanmak isteyen kişiler dokümantasyondan faydalanarak sınıfınızı kullanmaya başlayabilirler... Peki bu uzatım metodları olayın neresinde? Henüz bir yerinde değil aslında... Bu yöntemle yazmış olduğunuz bileşen içindeki metodların diğer .NET tiplerinin bir uzantısı olarak görünmesini sağlayabiliyorsunuz. Yani mevcut tiplerin özelliklerini genişletebiliyorsunuz... İçinizden "Ne var bunda. Zaten o tipleri miras yoluylaya alıp mevcut metodları geliştiremiyor muyuz?" diye sorduğunuzu duyar gibiyim... Evet izin verilmiş taban sınıftaki metodları ezerek (override) kendi işlevselliğinizi geliştirebilirsiniz tabi ki. Ama bizim bahsettiğimiz. Mevcut bir tipi miras yoluyla yeni bir tipe alarak onun üstüne ilaveler yapmak değil... Tekrar ediyorum: Amacımız mevcut tiplere ilave metodlar yazmak... Örneğin kişi string tipinde bir değişken tanımlandığında değişken adından sonra nokta diyerek nesnenin üyelerine baktığında orada sizin ilave etmiş olduğunuz metodu görebilecek ve kullanabilecektir... Bu yöntemin bir diğer faydası da sizin bileşeninizi kullanan kişilerin yeni bir tipi ve özelliklerini öğrenmeye, onun kopyalarını oluşturmaya gerek duymadan mevcut tipleri ile yeni metodlarınızı kullanmaya başlayacak olmalarıdır... Çok laf ettik değil mi? Az laf çok iş diyelim... Olayı netleştirmek için bir örnek üzerinde açıklayalım... Diyelim ki bir proje üzerinde çalışıyoruz... Bu projede girilen metinler içindeki boşlukların yerine "-" koymamız gereksin. Normal şartlarda ya yeni bir class içine ya mevcut classlar içine istenen işi yapan bir metod ilave ederiz.
public class StringMetodlarim { public static string MyFilter(string TextToFilter) { return TextToFilter.Replace(" ", "-"); } }
Yazılan bu metodu uygulamamızda (Bu örneğimiz için bir console uygulaması olsun) kullanmak için şuna benzer satırlar yazabiliriz:
class Program { static void Main(string[] args) { string myString = "Ozan Kutlu BAYRAM"; Console.WriteLine(StringMetodlarim.MyFilter(myString)); } }
Uygulamayı çalıştırdığımızda ekran üzerinde şöyle bir çıktı görünür: Ozan-Kutlu-BAYRAM Press any key to continue . . . Not: Yazılan yeni sınıfın Program sınıfı ile aynı isim alanında (namespace) olduğunu unutmayın. Farklı bir isim alanı içinde bu sınıfı tanımladınız ise sınıfı, Program sınıfından kullanabilmek için tanımladığınız isim alanını using direktifi ile tanıtın ya da açık yazım ile sınıfı kullanın (isimalani.sinifismi şeklinde) Şimdiye kadar yaptıklarımızı eskiden beri yaptığımız şeylerle aynıydı... Peki ya ben tanımladığım string değişkeni yazdığımın sınıfın metoduna parametre olarak geçirmek yerine "myString.MyFilter()" diyebilsem iyi olmaz mı? Evet diyorsanız işte uzatım metodlarının oyuna girdiği yer tam da burası... Yazdığını MyFilter metodunu string tipine ilave olarak eklemek için onu uzatım metodu olarak tanımlamamız gerekecek... Bu metoduda ayrı bir sınıf içinde yazalım...
public static class MyExtensions { public static string MyFilter(this string TextToFilter) { return TextToFilter.Replace(" ","-"); } }
bu metoda baktığımızda diğer metoddan tek farkının parametresinden önce aldığı this kelimesinin olduğunu farketmişsinizdir... İşte bu metodu uzatım metodu yapan sadece bu tek kelime... İşin geri kalanını bizim için C# derleyicisi hallediyor. Artık uygulamamız içinde ne zaman bir string tipinde değişken yaratsak yanında nokta ile başladığımızda bu uzatım metodunun da listelendiğini görebiliriz... Bu metodu mevcut örneğimizde kullanmak için tek yapmamız gereken:
class Program { static void Main(string[] args) { string myString = "Ozan Kutlu BAYRAM"; Console.WriteLine(myString.MyFilter()); } }
Klavyeleriniz şen ola... Tüm Uygulama
    1 using System;
    2 using System.Collections.Generic;
    3 using System.Text;
    4 
    5 namespace ExtensionMethods
    6 {
    7     class Program
    8     {
    9         static void Main(string[] args)
   10         {
   11             string myString = "Ozan Kutlu BAYRAM";
   12             Console.WriteLine(StringMetodlarim.MyFilter(myString));
   13             Console.WriteLine(myString.MyFilter());
   14         }
   15     }
   16 
   17     public static class MyExtensions
   18     {
   19         public static string MyFilter(this string TextToFilter)
   20         {
   21             return TextToFilter.Replace(" ", "-");
   22         }
   23     }
   24 
   25     public class StringMetodlarim
   26     {
   27         public static string MyFilter(string TextToFilter)
   28         {
   29             return TextToFilter.Replace(" ", "-");
   30         }
   31     }
   32 }

Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5