Pokazywanie postów oznaczonych etykietą narzędzia. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą narzędzia. Pokaż wszystkie posty

niedziela, 23 września 2012

NDepend na straży jakości kodu źródłowego [PL]

W ostatnim czasie zapoznawałem się trochę bliżej z narzędziem o nazwie NDepend. Przez ten czas na pewno nie stałem się ekspertem w korzystaniu z NDepend, chciałbym jednak podzielić się moimi subiektywnymi odczuciami na jego temat. Nie będę tutaj wymieniał jego funkcji (można to znaleźć na stronie producenta lub w wielu innych wpisach), nie będę pisał jak zainstalować (bo to proste, choć mi się nie podobało - lubię instalować a nie rozpakowywać :) ), nie będę się zastanawiać czy warto tego narzędzia używać (niech każdy wyrobi sobie własne zdanie, licencja jest odpłatna). Skupię się natomiast na elementach, które ja bym wykorzystał, które mi się spodobały lub które nie wywarły najlepszego wrażenia. Zapraszam do lektury.

niedziela, 17 kwietnia 2011

MPTS (Maciej-Progtech ToolSet) [PL]/[EN]

Chciałbym poinformować moich czytelników, że utworzyłem ostatnio nowy projekt na CodePlex'ie. Projekt nazywa się MPTS (Maciej-Progtech ToolSet) i jest on zestawem prostych narzędzi, przydatnych programistom .NET jak również czasami zwykłym użytkownikom. Zestaw powstał na bazie różnych programików, które zdarzyło mi się napisać, a które potrzebowałem do czegoś wykorzystać. Wspomniane programiki są najczęściej dość proste, jednak mają one wypełniać właśnie takie proste zadanie.

sobota, 2 kwietnia 2011

SharePoint 2010 – od czego zacząć [PL]

Ostatnio miałem potrzebę zapoznania się z SharePoint 2010. Dla tych, którzy również chcieliby zapoznać się z tą platformą, przygotowałem pewne informacje „na dobry początek”. W niniejszym wpisie będę się odwoływał do najprostszej wersji: SharePoint Foundation 2010.

poniedziałek, 5 kwietnia 2010

Twitter feed, czyli jak zautomatyzować przekazywanie wiadomości do Twitter'a [PL]

Tym razem chciałbym wspomnieć o przydatnym (dla tych co korzystają z Twitter'a, czy FaceBook'a) narzędziu, a mianowicie o Twitter Feed (http://twitterfeed.com).

poniedziałek, 1 lutego 2010

Integracja SVN i BugNET krok drugi [PL]

Promuj

Tym razem w ramach rozwinięcia tematyki integracji SVN z systemem BugNET pokażę trochę bardziej zaawansowane rozwiązanie.

Integracja oparta jest o stabilną (nie beta i nie RC) wersję BugNET: 0.7.921. Niestety w tej wersji BugNet nie jest wyposażony w żadne mechanizmy (np. web-serwisy), które mogą zapewnić integrację (zgodnie z zapewnieniami autora BugNet jakieś web-serwisy pozwalające na integrację mają być dodane od wersji 0.8). Ten post proponuje, jaki web-serwis można dodać do BugNet by umożliwić integracje z SVN polegającą na automatycznym dodawaniu komentarza do problemu, po wykonaniu commit w subversion.

wtorek, 26 stycznia 2010

Integracja Tortoise SVN i BugNET krok pierwszy [PL]

Promuj

Tworząc oprogramowanie na pewno przydaje się repozytorium kodu źródłowego, system do śledzenia problemów lub zadań i inne aplikacje.

W tym post'cie chciałbym się skupić na tych pierwszych dwóch i omówić jak można skonfigurować popularnego klienta repozytorium Subversion: Tortoise SVN, by można w nim wprowadzać numer problemu/zadania, a później klikając na ten numer w logu przejść do właściwego problemu w systemie kontroli problemów: BugNet.

poniedziałek, 18 stycznia 2010

Opowieść o 64 bitach, problemie z instalacją SSMSEE i dwóch liniach komend [PL]

Promuj

Ostatnio próbowałem w systemie 64 bit Windows 7 zainstalować Microsoft SQL Server Management Studio Express Edition(SSMSEE), niestety pomimo pobrania odpowiedniej wersji x64 instalacja zawsze kończyła się w błędzie. W końcu jednak udało mi się zakończyć sukcesem instalację. Wiązało się to z wykorzystaniem linii poleceń systemu Windows, czyli "cmd.exe", ale...

niedziela, 13 grudnia 2009

OPC klient z linii poleceń (przykład C# .NET) [PL]

Promuj

Jakiś czas temu zacząłem cykl poświęcony implementacji klienta OPC (Cz. 1. Przygotowania, Cz. 2. Implementacja), w tym post'cie chciałbym wrócić do tematu i przedstawić przykład gotowego programu, który realizuje opisywane możliwiści:

Klient OPC z linii poleceń (OPC command-line client)

poniedziałek, 23 listopada 2009

Jak zainstalować Sharepoint'a na Windows, który nie jest serwerem (Windows Vista, Seven)? [PL]

Jeżeli ktoś instalował kiedyś Windows Sharepoint Services 3.0 SP 2 (WSS), to pewnie zauważył że wymagany jest Windows 2003 SP1, a próba instalacji kończy się niepowodzeniem już na samym początku (po weryfikacji systemu). Ci którzy chcą się jednak uprzeć i zainstalować WSS na nie-serwerowym Windows, polecam przeczytanie artykułów (pokazują jak to zrobić na Windows Vista i Seven).

środa, 11 listopada 2009

Pojawił się kolejny release OPC UA SDK:1.01.307.0 Stable [PL]

Niedawno (5-go listopada 2009) pojawiła się kolejna wersja pakietu SDK dystrybuowanego przez OPC Foundation i wspierającego standard OPC Unified Architecture: OPC UA SDK 1.01.307.0 Stable. Pakiet SDK dostępny jest w kilku postaciach instalacyjnych, których opis można znaleźć w dokumencie: "ROADMAP TO UA SOFTWARE DOWNLOADS". Plik readme można znaleźć tutaj. Poszczególne instalatory pakietu dostępne są ze strony OPC Foundation w dziale download (dostęp tylko dla członków OPC Foundation). W skład pakietu wchodzą również biblioteki i przykłady wspierające platformę .NET. Zachęcam również do zapoznania się z helpem online: http://opcfoundation.org/uasdk/Help/ oraz e-książką poświęconą OPC Unified Architecture.

Promuj

sobota, 31 października 2009

OPC UA Server (CommServer UA) już dostępny! [PL]

Promuj

Po ostatniej wytężonej pracy w firmie gdzie pracuję, chciałbym ogłosić, że OPC UA Server - CommServer UA jest już dostępny i gotowy do pobrania dla wszystkich tych, którzy chcą się bliżej zapoznać z technologią OPC UA

CommServer to pakiet oprogramowania komunikacyjnego do zarządzania transferem danych. Jest to w pełni konfigurowalny serwer OPC Unified Architecture (OPC UA). Wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu.

Jest to pierwsza publiczna wersja CommServer’a UA dostępna w dziale download wortalu CommServer (wersja dostępna z licencją demo). CommServer UA został przetestowany pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy. OPC UA Address Space Model Designer w wersji 2.10.00 i OPC Viewer w wersji 3.00.02 są komponentami CommServer’a UA w wersji 1.00. 20.

CommServer UA wspiera interfejs serwera OPC UA i pozwala na udostępnianie danych z trzech źródeł (nazywanych w oprogramowaniu DataSources):

  • CommServer – silnik komunikacyjnych (wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu)
  • Klient OPC DA (działa jako Wrapper OPC DA z w pełni konfigurowalną przestrzenią adresową)
  • Symulator (dane są symulowane)

 

Zobacz online help (http://www.commsvr.com/UAModelDesigner/Index.aspx)

Pobierz najnowszą wersję CommServer UA 1.00.20

Kolejną nowością są nowe wersje oprogramowania z rodziny CommServer

Przetestowane pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy.

OPC Viewer 3.00.02

DataPorter rel. 2.00.02

CommServer 4.00.02

CommServer UA w wersji 1.00.20

OPC UA Address Space Model Designer 2.10.00

Promuj

środa, 28 października 2009

OPC Client .NET (cz.2 Implementacja) [PL]

Promuj

W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :).

Na początku należy dodać referencję do projektu w Visual Studio:


Teraz wskazujemy serwis (wpisując jego adres: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx):


Wpisujemy jeszcze nazwę naszej referencji, klikamy na "Add Reference" i referencja powinna nam się pojawić w naszym Solution:


Teraz wykorzystamy dwie funkcje: GetAvailiableItems (zwracającą dostępne w serwerze elementy) oraz GetValue_OneItem (odczytującą wartość wybranego elementu). Informacje na temat innych wywołań dostępne są tutaj: http://www.commsvr.com/DataPorter/Index.aspx?topic=html/3bddf5c3-5d5a-4569-85db-fcdc52a1b34a.htm. Poniższe dwa rysunki pokazują efekt wykonania tych dwóch funkcji przy pomocy wspomnianej wcześniej strony debugger'a.

GetAvailiableItems:


GetValue_OneItem:


Oczywiście my wywołamy te dwie funkcje z poziomu C#. W tym celu należy najpierw wykonać połączenie: OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess(). Później można pobrać listę elementów jako tablicę stringów: string[] items = opcDA.GetAvailiableItems(). Oraz można pobrać wartość dla jednego z elementów tablicy: OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] ).

Ostatecznie kod prostej funkcji nawiązującej połączenie, pobierającej i wyświetlającej listę dostępnych elementów oraz wartość pierwszego dostępnego elementu, wygląda następująco:

static void Main( string[] args )
{
  //connecting to remote object
  OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess();
  // getting availiable item list
  string[] items = opcDA.GetAvailiableItems();
  //displaing the list
  Console.WriteLine("Item List:");
  foreach ( string item in items )
    Console.WriteLine( item );
  //reading a value of the first item (#0)
  OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] );
  Console.WriteLine( "---------------------" );
  Console.WriteLine( "Value of item {0}", items[ 0 ] );
  Console.WriteLine( "value={0}", val.Value );
  Console.WriteLine( "quality={0}", val.Quality.QualityBits );
  Console.WriteLine( "timestamp={0}", val.Timestamp );

  //waiting for enter
  Console.WriteLine( "[Press Enter]" );
  Console.ReadLine();
}

I daje w efekcie:



Item List:
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/102
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/000
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/001
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/002
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/105
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/109
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/104
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/108
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/105
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/110
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/109
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/102
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/104
---------------------
Value of item CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
value=170
quality=good
timestamp=2009-08-12 15:17:04
[Press Enter]

Proste prawda? :)

Promuj

wtorek, 27 października 2009

OPC Client .NET (część 1. Przygotowania) [PL]

Promuj

Jakiś czas temu w post'cie pt. "Implementacja klienta OPC w C#" spróbowałem naświetlić podstawowe zagadnienia związane z implementacją klienta OPC na platformie .NET. Nie jest to proste zagadnienie, a do tego poza dobrą znajomością programowania opartego o DCOM należy mieć dostęp do specyfikacji standardu OPC. W tym artykule chciałbym wskazać pewną alternatywę, a mianowicie pokazać jak można dostać się do danych w OPC z poziomu platformy .NET (przykład w C#) bez implementacji pełnego klienta OPC. W tym celu zostanie wykorzystane dodatkowe oprogramowanie: DataPorter, które posiada funkcjonalność klienta OPC oraz zapewnia dostęp do odczytywanych przez niego danych poprzez WebSerwis. W prezentowanym tutaj przykładzie nie zostanie napisany "prawdziwy klient OPC", gdyż zostanie wykorzystane kompletne oprogramowanie klienta, zamierzam natomiast pokazać jak przy pomocy prostego programiku można dostać się do danych z OPC. Niniejszy artykuł może być również ciekawy dla osób, które chcą poznać przykład wykorzystania jakiegoś WebSerwisu z poziomu .NET (oczywiście nie piszę tu o WebSerwisie w rozumieniu serwisów w formie stron internetowych, a o serwisach opartych o SOAP i technologie WS-*)

Oprogramowanie DataPorter jest dostępne w pełni funkcjonalnej wersji demonstracyjnej (ograniczonej czasowo) na stronie: http://www.commsvr.com/DownloadCenter/ProductSoftware/PR2605DataPorter_Software.aspx (wymagana jest darmowa rejestracja). Instalowane jest z domyślną konfiguracją, w której podłącza się one do oprogramowania serwera OPC: CommServer. Opis domyślnej konfiguracji dostępny jest tutaj: http://www.commsvr.com/Products/DataPorterDescription/DataPortersampleconfiguration/tabid/320/language/en-US/Default.aspx. Pokazany w tym artykule przykład używa oprogramowania CommServer, dlatego warto je również zainstalować (jak to zrobić?). Przed przystąpieniem do dalszych ćwiczeń warto, w tym miejscu sprawdzić wspólne działanie CommServer'a i DataPorter'a (w przypadku jakichś problemów polecam odwiedzenie e-manuala DataPorter'a, dostępnego tutaj: http://www.commsvr.com/DataPorter/Index.aspx

Po pomyślnym zweryfikowaniu działania DataPorter'a i CommServer'a należy zainstalować dodatek do DataPorter'a udostępniający WebSerwisy (uwaga wcześniej należy mieć zainstalowany IIS, zintegrowany z platformą .NET 2.0). Dodatek znajduje się w katalogu DataPortera w następującej lokalizacji:

"%programfiles%\CAS\DataPorter\AdditionalSetup\CAS.OPCWSDataAccess\setup.exe" 

Po instalacji dodatku i wpisaniu w przeglądarkę internetową adresu: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx, oczom powinien się okazać obraz podobny do poniższego:


Jest to strona generowana w sposób automatyczny przez serwer IIS na podstawie WebSerwisu i umożliwiająca jego debugowanie (uwaga: ta strona dostępna jest tylko na lokalnej maszynie - tzn. tylko na tym komputerze, na którym zainstalowany jest WebSerwis).

Dla takiego WebSerwisu można pobrać i odczytać jego definicję zapisaną w języku WSDL. W tym celu należy do przedstawionego wyżej adresu dopisać "?wsdl" lub kliknąć na odpowiedni odnośnik na wspomnianej autogenerowanej stronie.


W następnej części zaprezentuję jak obsłużyć taki WebSerwis z poziomu C# i .NET, czyli w konsekwencji jak dostać się do danych w OPC.

Promuj

piątek, 23 października 2009

Visual Studio 2010 Beta 2 Download [PL]

Promuj

Zgodnie z tym co pisałem wcześniej, Microsoft opublikował publicznie kolejne wersje beta swoich produktów związanych z Visual Studio 2010. Poniżej spis linków (pochodzący z oficjalnej strony poświęconej Visual Studio), wcześniej można obejrzeć filmik na temat instalacji: http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/.

Visual Studio

Visual Studio Extensibility

.NET Framework

Team Foundation Server

Test Products

Express

Promuj

środa, 21 października 2009

Visual Studio 2010 Beta 2 Training Kit już dostępny [PL]

Niedawno pisałem o tym, że pojawiła się kolejna wersja beta Visual Studio 2010, wczoraj doszła kolejna nowość: Microsoft opublikował Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview. Dostępny jest on pod adresem:

http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en

Kolejna Beta (2) tego Training Kit'u zawiera 15 prezentacji, 19 hands-on labs i 13 demonstracji. Pokazano tam wiele nowych technologii, włączając w to: C# 4, VB 10, F#, Parallel Extensions, Windows Communication Foundation, Windows Workflow, Windows Presentation Foundation, ASP.NET 4, Entity Framework, ADO.NET Data Services, Managed Extensibility Framework, and Visual Studio Ultimate.

Więcej na temat zawartości pakietu można znaleźć w artykule: "Visual Studio 2010 Beta 2 Training Kit Published"

Promuj

Google Chrome - pierwsze wrażenia [PL]

Przegląda Google Chrome ma już ponad rok, więc pomimo mojego przyzwyczajenia do Firefox postanowiłem przyjrzeć się jej trochę bliżej.


Nie korzystam jeszcze z niej długo, ale muszę przyznać, że moje pierwsze wrażenia są dość pozytywne. Przeglądarka działa stabilnie i szybko. Ma ciekawy wygląd, którego cechą jest minimalistyczny interfejs, tak aby obszar na którym wyświetlana jest strona był jak największy. Nawet pasek tytułu okna i ramka okna znika po maksymalizacji przeglądarki. Bardzo wygodny jest też zintegrowany z wyszukiwarką pasek adresu - działa on dużo lepiej niż w Firefox

Niestety są też pewne braki: naciśnięcie rolki na myszce nie powoduje otwierania strony "w tle". Na pasku adresu brakuje mi ikonki RSS, która pojawia się jeżeli na stronie znajduje się jakiś kanał, a jej naciśnięcie pozwala na dodanie RSS do wybranego agregatora. Z RSS'ami jest jeszcze jeden problem (chociaż może jest to problem mojego czytnika (RSS Bandit), który nie zintegrował się z Chromem), otworzenie kanału nie powoduje jego automatycznego importu do czytnika. Kolejny problem powodują niektóre edytory na różnych stronach, nie działa np. popularny FCKEditor, czy wykorzystywany edytor na portalu "Dotnetomaniak". Brakuje też mi opcji zaznaczenia fragmentu strony i wyświetlenia źródła zaznaczenia.... ale może już dość tego narzekania. Być może część przytoczonych przeze mnie problemów znika po odpowiedniej konfiguracji, czy zainstalowaniu odpowiedniego dodatku

Na koniec, tym wszystkim, którzy chcieliby przeczytać więcej na temat Chrome (w języku polskim), polecam odwiedzenie bloga:

GOOGLE CHROME DEV
POLSKI BLOG O PRZEGLĄDARCE GOOGLE CHROME. NOWE WERSJE, PLUGINY, CIEKAWOSTKI.

poniedziałek, 19 października 2009

Visual Studio 2010 Beta 2 nadchodzi [PL]

Czy już wszyscy zainteresowani przetestowali Visual Studio 2010 Beta (1)? Jeśli nie, to może o tamtej wersji zapomnieć i zwrócić uwagę na kolejną opublikowaną betę, która dzisiaj pojawiła się jako dostępna dla subskrybentów MSDN, a 21-go października będzie dostępna dla innych zainteresowanych. Więcej na ten temat znajdziemy w artykule: "Microsoft names Visual Studio 2010 dates". Wiadomo już też kiedy ma nastąpić oficjalna premiera nowego Visual Studio, a będzie to 22-gi marca 2010. Wiadomo też ile będzie kosztować (zainteresowanych odsyłam do wspomnianego artykułu).

Nowa wersja ma zawierać dodatkowe narzędzia wspierające Windows 7 i nadchodzący SharePoint 2010, drag-and-drop bindings w Silverlight i Windows Presentation Foundation, wykorzystanie Dynamic Language Runtime (DLR) do programowania w językach skryptowych i wsparcie dla programowania równoległego (tutaj też proponuję zajrzeć do artykułu). Ciekawe natomiast jak to będzie z wydajnością, na którą wielu do tej pory narzekało? .... pobierzemy, zainstalujemy, zobaczymy ...

Promuj

Update: linki do downloadu są podane tutaj: http://maciej-progtech.blogspot.com/2009/10/visual-studio-2010-beta-2-download-pl.html

niedziela, 13 września 2009

Jak wykonać build kodu C# .NET przy pomocy linii poleceń systemu Windows [PL]

Promuj

Zwykle kod kompiluje się i wykonuje build bezpośrednio ze środowiska IDE, czasami jednak zachodzi potrzeba, że chcemy wykonać build poza środowiskiem IDE, np. wykorzystując skrypty linii poleceń systemu Windows. Jak można to zrobić? Są przynajmniej trzy możliwości: kompilator CSC, MSBUILD lub Visual Studio wywołane z linii poleceń.

W tym artykule pokarzę przykładowe wykorzystanie każdej z metod w oparciu o prosty przykład: aplikację typu "Hello World!", o następującym kodzie w pliku Program.cs:

using System;

namespace HelloWorld
{
  class Program
  {
    static void Main( string[] args )
    {
      Console.WriteLine( "Hello World !" );
    }
  }
}

Solution (HelloWorld.sln) natomiast wygląda następująco:

CSC.EXE

Jest to podstawowy kompilator dla C#, czyli Microsoft (R) Visual C# 2008 Compiler. Jego bezpośrednie wykorzystanie jest możliwe aczkolwiek mało wygodne. To właśnie tego kompilatora używają inne narzędzia do kompilacji kodu. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:

"%Windir%\Microsoft.NET\Framework\v3.5\csc"  /out:.\HelloWorld.exe .\HelloWorld\Program.cs

MSBUILD (msbuild.exe)

MSBuild, czyli Microsoft (R) Build Engine jest bardzo wygodnym narzędziem które z wykorzystaniem linii poleceń systemu Windows pozwala na build poszczególnych projektów lub całego solution wytworzonego przy pomocy IDE jakim jest Visual Studio. Wynik działania narzędzia w czytelny sposób prezentowany jest na ekranie konsoli, a dodatkowo dzięki różnym kolorom tekstu można łatwo się zorientować, czy build przeszedł pomyślnie. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:

"%Windir%\Microsoft.NET\Framework\v3.5\msbuild"  .\HelloWorld.sln /t:build /p:Configuration=Release

Niestety narzędzie ma też pewne wady, a mianowicie nie wszystkie typy projektów są wspierane, np. to narzędzie nie nadaje się do zrobienia build’u projektu typu "setup".

Visual Studio z linii poleceń (devenv.exe)

Środowisko Visual Studio można również wywołać z linii poleceń (bez uruchamiania interfejsu graficznego). Tą cechę można wykorzystać właśnie do wykonania build’u, np.:

"%VS90COMNTOOLS%\..\IDE\devenv.exe"  .\HelloWorld.sln /rebuild Release 

Tutaj dużym pozytywem jest fakt , że wpierane są wszystkie typy projektów wspierane przez Visual Studio. Niestety są też wady, a mianowicie dużo trudniej stwierdzić, czy biuld się udał, czy coś poszło nie tak (i dlaczego?) oraz zdarza się (przynajmniej u mnie) że środowisko kończy swoje działanie w wyjątku.

Podsumowując

Na tym prostym przykładzie widać, że mamy kilka możliwości by wykonywać build’a z linii poleceń (np. przy pomocy jakiegoś skryptu). Najwygodniejszym (i polecanym) jest MSBUILD, chociaż w przypadku nie wspieranych przez niego projektów warto wspomagać się wywołaniem Visual Studio (devenv.exe) bezpośrednio z linii poleceń.

Promuj

wtorek, 8 września 2009

SC.exe, a kontrola serwisów w Windows [PL]

Promuj

Jakiś czas temu opisywałem jak można przy pomocy platformy .NET utworzyć i zainstalować serwis w systemie Windows. W tamtym przypadku do instalacji bądź deinstalacji serwisów zostały wykorzystane odpowiednie klasy instalacyjne, które wykorzystane są podczas instalacji, bądź deisntalacji całego produktu. Zdarza się jednak, że nie zadziałają one jak należy (np. nie potrafią usunąć serwisu), czasami po prostu nie chcemy uruchamiać instalatora produktu by przetestować nasz serwis lub chcemy jako serwis uruchomić zupełnie inną aplikację (serwis WWW, repozytorium, czy cokolwiek innego).. Czy jest więc możliwość "ręcznego" stworzenia lub usunięcia serwisu?

Okazuje się że TAK.

Można w tym celu wykorzystać narzędzie działające w linii poleceń systemu Windows: sc.exe .

Szczegółowe informacje na temat narzędzia można znaleźć tutaj: http://technet.microsoft.com/en-us/library/cc754599%28WS.10%29.aspx. Jak widać lista opcji jest dość spora. Ja w tym artykule chciałbym się skupić się na sposobie instalacji i usunięcia serwisu w systemie Windows

Instalacja serwisu Windows

W celu instalacji serwisu wykorzystujemy polecenie sc create o następującej składni:

sc [<ServerName>] create [<ServiceName>]
[type= {own | share | kernel | filesys | rec | interact type= {own | share}}] 
[start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}]
[binpath= <BinaryPathName>] [group= <LoadOrderGroup>] 
[tag= {yes | no}] [depend= <dependencies>]
[obj= {<AccountName> | <ObjectName>}] 
[displayname= <DisplayName>] [password= <Password>]

w najczęstszym przypadku będzie to:

sc create MojaNazwaSerwisu binpath="Sciezka_do_pliku_wykonywalnego_serwisu_razem_z_ew_argumentami"

Usuwanie serwisu Windows

W celu usunięcia serwisu wykorzystujemy polecenie sc delete o następującej składni:

sc [<ServerName>] delete [<ServiceName>]

w najczęstszym przypadku będzie to:

sc delete MojaNazwaSerwisu 
Promuj

poniedziałek, 10 sierpnia 2009

Jak wypakować zawartość pliku MSI? [PL]

Czy zdarzyło wam się, że trzeba było zajrzeć co zawiera instalator typu MSI, bez instalowania danego produktu? Mnie tak, a rozwiązanie okazało się bardzo proste. Wiem że to co za chwilę napiszę znajduje się na innych blogach, ale aby ułatwić moim czytelnikom (i sobie ;) ) możliwość skorzystania z tego sposobu, postanowiłem podać tą receptę również na tym blogu.

Do wypakowania plików zawartych w pliku .msi wystarczy w linii komend wpisać:

msiexec /a Path_to_MSI_file /qb TARGETDIR=Extraction_directory

Na przykład, gdy chcemy wypakować pliki z c:\myinstaller.msi do katalogu c:\myinstaller_content (katalog musi istnieć przed wykonaniem komendy), należy wpisać:

msiexec /a c:\myinstaller.msi /qb TARGETDIR=c:\myinstaller_content

Proste prawda?

P.S. wiem że są również inne narzędzia np. Less MSIérables, ale ponieważ to proste rozwiązanie wykonuje akurat to, co potrzebuję, więc po co sięgać po bardziej skompilowane rozwiązania?

Posty powiązane / Related posts