Category Archives: Visual Studio 2012

MSB4175: The task factory "CodeTaskFactory" could not be loaded

Az alábbi hibaüzenetbe sikerült belefutnom fordítás közben:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\CodeAnalysis\Microsoft.CodeAnalysis.targets(214,5): error MSB4175: The task factory "CodeTaskFactory" could not be loaded from the assembly "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v12.0.dll".

Could not load file or assembly ‘file:///C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Build.Tasks.v12.0.dll’ or one of its dependencies.

The system cannot find the file specified.

A dolog különlegessége, hogy a gépen csak VS 2013 volt, 2012 soha.

A problémát talán az okozza, hogy a 2013-as verziótól kezdve az MSBuild már nem a .NET Framework, hanem a Visual Studio része, ennek megfelelően a fájlrendszerben is máshol laknak a hozzá tartozó fájlok. A hibaüzenetből kiderült, hogy a Microsoft.Build.Tasks.v12.0.dll fájlt a rendszer a C:\Windows\Microsoft.NET\Framework64\v4.0.30319 mappában keresi, pedig nálam itt található: C:\Program Files (x86)\MSBuild\12.0\Bin. Átmásoltam, és azóta megy rendesen.

Valószínűleg nem ez a legszebb megoldás, de mivel a forráskódhoz nem lehetett hozzányúlni, és nálam megoldotta a problémát, nyugodtan alszom.

 

Technorati-címkék: ,,

Az IIS Express kitakarítása

Az IIS Express a beállításait a %USERPROFILE%\Documents\IISExpress\config\applicationHost.config fájlban tárolja, ami nagyon kényelmes, hiszen így nem szükséges rendszergazdai jog a szerkesztéséhez. Ennek következménye, hogy a Visual Studio eltávolításával a webszerver és a webalkalmazások beállításai megmaradnak.

Előfordulhat, hogy eltávolítjuk a VS 2012-t, telepítjük a 2013-as verziót, majd létrehozunk egy új webalkalmazást, ami szokatlanul viselkedik, például minden indításakor Windowsos bejelentkezést kér. Ez lehet amiatt is, hogy a korábban már hoztunk létre ugyanilyen néven webhelyet az IIS Expressben, aminek a beállításai megőrződtek a konfigurációs fájlban.

Ha a szokásos projektjeink mellett gyakran hozunk létre tesztelésre webprojekteket, akkor időnként érdemes kitakarítani az IIS Expresst. Mivel nincsen hozzá grafikus felületünk, vagy kézzel szerkesztjük az applicationHost.config fájlt, vagy parancssorból esünk neki.

Az Expresses appcmd.exe a C:\Program Files (x86)\IIS Express mappában található. Listázhatjuk vele a webhelyeket:

C:\Program Files (x86)\IIS Express>appcmd list site
SITE "WebSite1" (id:1,bindings:http/:8080:localhost,state:Unknown)
SITE "MyProject" (id:2,bindings:http/*:44441:localhost,https/*:44300:localhost,state:Unknown)
SITE "WebSite1(1)" (id:3,bindings:http/*:44468:localhost,state:Unknown)
SITE "WebSite2" (id:4,bindings:http/*:44465:localhost,state:Unknown)

Ha a webhelyek nevei nem mondanak sokat, akkor listázhatjuk a virtuális mappákat, mert azok mellett megjelennek a fizikai útvonalak is:

C:\Program Files (x86)\IIS Express>appcmd list vdir
VDIR "WebSite1/" (physicalPath:%IIS_SITES_HOME%\WebSite1)
VDIR "MyProject/" (physicalPath:W:\Projektek\MyProject)
VDIR "WebSite1(1)/" (physicalPath:W:\Temp\WebSite1)
VDIR "WebSite2/" (physicalPath:W:\Desktop\WebSite2)

Ha valamelyik webhelyre még szükségünk van, csak épp értelmes nevet akarunk neki adni, akkor átnevezhetjük:

C:\Program Files (x86)\IIS Express>appcmd set site WebSite1(1) -name:Master
SITE object "WebSite1(1)" changed

Amire pedig nincs szükség, azt bátran törölhetjük:

C:\Program Files (x86)\IIS Express>appcmd delete site WebSite2
SITE object "WebSite2" deleted

 

Technorati-címkék: ,,

Egyedi ablak cím Visual Studioban

Aki gyakran indítja el a Visual Studiot egyszerre több példányban azért, hogy ugyanannak a projektnek több változatát különböző könyvtárakból nyissa meg, az gyakran bosszankodik azon, hogy sem a Visual Studio ablakának címsorában, sem pedig a Windows tálcán nem látszik, hogy ép melyik ágról van szó. Minden teljesen egyforma:

vs-rename-similar

Ezen segíthet a Rename Visual Studio Window Title bővítmény, ami a szülő könyvtárak neveit olyan mélységben szúrja be a címsorba, ahogy csak szeretnénk:

vs-rename-title

Persze ugyanez jelenik meg a tálcán is:

vs-rename-taskbar-branches

A megjelenés egészen jól testreszabható a beállítások között:

vs-rename-options

Apró, de hasznos eszköz.

 

Technorati-címkék: ,

Így varázsolsz biztonsági rést ASP.NET-ben

Az ASP.NET WebForms egyik óriási előnye, hogy villámgyorsan lehet vele adatelérési kódot varázsolni. Példaként vegyük a Northwind adatbázist, és legyen az a feladat, hogy csak az amerikai beszállítókat kell megjelenítenünk.

Dobjunk a Default.aspx-re egy GridView vezérlőt, majd állítsuk be szépen a Configure Data Source varázslóban, hogy a Suppliers táblából adja vissza… (kattints a teljes méretű képért)

PK-in-URL-1

… az USA-hoz tartozó beszállítókat:

PK-in-URL-2

Pofozzunk még annyit a GridView beállításain, hogy dobjuk le a SupplierID és a CompanyName oszlopokat, majd az utóbbit tegyük vissza, ám ezúttal HyperLinkField formájában. A link vezessen a (még nem létező) View.aspx oldalra, és query string paraméterben adjuk át neki a beszállító azonosítóját:

PK-in-URL-3

Készen is vagyunk, bátran ki lehet próbálni, íme az amerikai beszállítók listája:

PK-in-URL-4

Készítsük el a View.aspx oldalt, amire dobjunk egy DetailsView vezérlőt. Indítsuk el a Configure Data Source varázslót és kérjük le a Supplier rekord összes oszlopát…

PK-in-URL-5

…de csak abból a rekordból, amire a query stringben hivatkozunk, hiszen így kapcsoljuk össze a két oldalt:

PK-in-URL-6

Kitt és katt (Next és Finish) és máris készen van a működő oldalunk, amin a kiválasztott beszállító összes adatát át tudjuk tekinteni:

PK-in-URL-7

Működik? Igen, kiválóan lehet vele böngészni az USA-beli beszállítókat. Hurrá!

Hány sor kódot írtunk? Egyet sem, mert mindet a varázslók írták meg nekünk. Hurrá!

Van benne biztonsági rés? Van bizony! Elég átírni az URL végén lévő számot 2-ről mondjuk 4-re és máris hozzáférünk egy japán beszállító adataihoz, miközben nekünk csak az USA-ban lévőket szabadna látnunk:

PK-in-URL-8

Sőt, ha 1-től szép sorban minden számot kipróbálunk, akkor pillanatok alatt letölthetjük magunknak az összes beszállító adatait, azaz elvihetjük a teljes beszállítói kapcsolat adatbázist, az pedig már érték! Hurrá?

Ez történhet, ha az ember vakon megbízik egy varázslóban, vagy vakon követi valamelyik “hú-de-egyszerű-ez” demó lépéseit.

Most persze mondhatod, hogy a profik ilyet nem csinálnak. Pedig de, mondok is rögtön két példát.

Pár évvel ez előtt 114.000 iPad tulajdonos személyes adatait vitték el pillanatok alatt úgy, hogy egy URL-ben egyszerűen végigpróbálták a lehetséges eszköz azonosítókat (ICC ID – integrated circuit card identifier). Mindössze egy fél képernyőnyi szkript kellett hozzá és így került a címlapokra:

PK-in-URL-9

A biztonságcentrikus fejlesztéssel foglalkozók pedig így reagáltak rá:

PK-in-URL-facepalm-1

Ugyanezt a hibát később egy bank is elkövette. A Citibanktól – igen, egy banktól! – 200.000 ügyfél személyes-, folyószámla- és bankkártya adatait vitték el pont ugyanígy: csak átírták az ügyfél azonosítót az URL-ben. Erre aztán már nem csak a biztonsági szakemberek reagáltak így:

PK-in-URL-facepalm-2

Két rövid tanulság a fentiekből:

  • Ne tégy kitalálható azonosítót az URL-be!
  • Az eltitkolt URL nem védelem!

A varázslók a produktivitásban segítenek, de nem gondolkodnak. Egy biztonságtudatosan gondolkodó és a biztonságos programozás gyakorlatát követő fejlesztő bár valószínűleg lassabban kódol, hosszabb távon mégis kifizetődőbb.

 

Technorati-címkék: ,,,

Még egyszer a Windows és a Visual Studio verziókról

Korábban már röviden írtam arról, hogy az egyes Windows és Visual Studio verziók nem minden kombinációban szeretik egymást. Kis kiegészítés:

A Visual Studio 2012 (ha Windows 8-on vagy 8.1-en fut) továbbra is támogatja Windows Store alkalmazások készítését Windows 8-ra. Nem támogatja viszont Windows 8.1-re készülő Windows Store alkalmazások létrehozását vagy szerkesztését. A Windows 8-ra készülő alkalmazások tökéletesen működnek Windows 8.1 alatt is, csak éppen nem tudják kihasználni az új funkciókat, vagy a teljesítmény javulást.

A Visual Studio 2013 (amiből egyelőre a Preview érhető el), amennyiben Windows 8.1-en fut, támogatja Windows 8.1-re készülő Windows Store alkalmazások létrehozását és szerkesztését. Támogatja a Windows 8-ra készülő Windows Store alkalmazásokkal való munkát is, de olyan projekt sablonokat nem tartalmaz, amivel új, Windows 8-ra készülő projektet lehetne létrehozni. Ha viszont a Visual Studio 2013 Windows 8-on fut, akkor nem támogatja a Windows Store alkalmazások készítését, függetlenül attól, hogy az alkalmazás Windows 8-ra vagy 8.1-re készülne.

Ez várhatóan így marad a Visual Studio végleges változatával is.

Cserébe a jó hír, hogy a Visual Studio 2012 és a 2013 telepíthető egy gépre egymás mellé (side-by-side).

 

Technorati-címkék:

A VS 2013 preview-val csak Windows 8.1-re lehet fejleszteni?

Aki a Visual Studio 2013 új preview változatával Windows 8.1-en próbált meg létrehozni új Windows Store projektet, annak feltűnhetett, hogy a projekt neve mellett a Solution Explorer ablakban megjelenik a “(Windows 8.1)” jelzés:

vs2013-solution-explorer

A projekt tulajdonságait megnézve észrevehetjük a Target Platform Version opciót, azonban ezt nem lehet állítani:

vs2013-target-platform

Az az alapelv továbbra is igaz, hogy Windows 8-on lehet csak Windows Store alkalmazásokat fejleszteni, ám most már a verziókra is oda kell figyelnünk (legalábbis a mostani preview-nál biztosan).

A lényeg:

  • Létező Windows 8 projekteket meg lehet nyitni és lehet módosítani VS 2013-mal Windows 8.1-en.
  • Új Windows 8 projektet nem lehet létrehozni VS 2013-mal Windows 8.1-en.
  • Windows 8.1-en új Windows 8 projekt létrehozásához VS 2012-t kell használni.

 

Technorati-címkék: ,

Mockupkészítő eszközök

Kevés olyan hasznos dolog van a fejlesztő életében, mint a mockupkészítő eszközök. Ezek olyan szoftverek, amelyek segítségével leskiccelhetjük, hogyan fog kinézni az alkalmazásunk. Bár a mockupok tipikusan fapadosan kinéző drótváz ábrák, mégis számtalan előnyük van:

  • Legalább egyszer mi is végiggondoljuk, hogy milyen funkciókat szeretnénk, és azok hogyan fognak megjelenni a felhasználói felületen. Akár a teljes alkalmazást lerajzolhatjuk, és a hagyományos képfájlokkal ellentétben a mockupkészítő eszközök által biztosított interakcióknak köszönhetően akár ki is próbálhatjuk.
  • Az ábra felett eszmét cserélhetünk másokkal, akár a megrendelővel, akár más tervező/fejlesztő kollégákkal. Amikor mindkét fél látja, amiről beszélnek, sokkal fókuszáltabb és hatékonyabb tud lenni a megbeszélés. Ha valakinek ötlete van, azt sokkal gyorsabban át lehet vezetni egy statikus ábrán, mint egy élő kódon.
  • Az ábra mellé villámgyorsan feljegyezhetjük a legjobb ötleteinket (pl. “A Mentés működjön Ctrl+S-re is.”), ami sokkal gyorsabb, mint dokumentációt írni, arról nem is beszélve, hogy egy rövid feljegyzést sokkal valószínűbb, hogy elolvas az implementációt végző fejlesztő.
  • A mockup alapján szinte mindenki, a grafikus, a sitebuilder, a fejlesztő azonnal el tud kezdeni dolgozni és még a megrendelő is látja, hogy halad a projekt.
  • Egyes eszközök kódvázat is tudnak generálni az ábrából, ami talán még használható kiindulópont is lehet a fejlesztés során.

Összességében azt tapasztaltuk, hogy a mockupok egyértelműbbé teszik mindenki életét, és bár látszólag plusz munkát igényelnek, a félreértések megszűntetésével végül spórolhatunk velük.

Szerintem teljesen mindegy, hogy milyen eszközzel készülnek a mockupok, a lényeg, hogy a rajzolás ne igényeljen több időt, mint majd az implementáció. Ennek fényében én sokáig papíron mockupoltam, de ma már vannak egészen hatékony eszközök.

Balsamiq Mockups

A Balsamiq egy Adobe Air-re épülő, kifejezetten statikus mockup készítésére tervezett alkalmazás. A használata pofonegyszerű, talán ennek köszönhetően vált a legelterjedtebb eszközzé ezen a piacon. A Balsamiq nem ingyenes, de 79 dollárt simán megér, mi is ezt használjuk már évek óta.

Ami tetszik benne:

  • Bármilyen alkalmazást megtervezhetünk benne, legyen az desktop, webes vagy mobil app:

balsamiq-components

  • A Balsamiq már annyira elterjedt, hogy kis keresgéléssel kész template-eket találhatunk a neten, például akár Windows Phone vagy Windows 8 fejlesztéshez.
  • Ahogy a fenti ábrán is látszik, a beépített vezérlők kifejezetten rondák (bár az újabb Balsamiq verzióban már “szép” skint is lehet rájuk húzni), ami azért nagyon praktikus, mert egy megbeszélés során a dizájn nem vonja el a figyelmet a lényegről, ami mockupok esetén a funkció, a layout és a navigáció. Aki találkozott már olyan ügyféllel, aki 2-3 órát képes volt elfilózni azon, hogy egy-egy ikon mennyire felismerhető, az tudja, hogy miért preferálom a ronda mockupot.
  • Az ábrák képesek minimális interakcióra, ugyanis valamennyi vezérlő kattintható és a kattintás hatására képes elnavigálni minket egy másik oldalra. Egy popup ablakot ennek megfelelően úgy rajzolunk, hogy duplikáljuk a teljes ábrát, majd a másolatra rárajzoljuk a felugró ablakot. Ez ugyan plusz munka, de szinte mindent kipróbálhatóvá tesz.
  • A vezérlők újrafelhasználható egységekbe csomagolhatók, így például egy menüt, vagy egy master page-et elég egyszer megrajzolnunk és egy helyen karbantartanunk.
  • A Balsamiq-nak van teljes képernyős vetítő üzemmódja, ami egyeztetéseken nagyon praktikus szokott lenni.
  • Az ábrákat képes PDF dokumentumba exportálni, ráadásul úgy, hogy kattinthatóak maradnak, tehát egy sima PDF olvasóval kipróbálhatóvá válik a mockup.

Néhány tanács azoknak, akik most kezdenek a Balsamiq megismeréséhez:

  • Vásárlás előtt próbáld ki a szoftvert, van belőle trial és böngészőben futtatható próba változat is.
  • Nézd végig a vezérlőket, hiszen nincs bosszantóbb annál, mint amikor az ember megrajzol egy összetettebb UI elemet, azután pedig kiderül, hogy készen is behúzhatta volna az eszköztárról.
  • Mielőtt nagyobb rajzolásba fogsz, keress a neten kész template-eket, például a MockupsToGo oldalán jó adag található.
  • A Balsamiq használata egyszerű, hamar rá lehet érezni, mégis azt javaslom, hogy fusd végig a dokumentációt, megéri. Sőt, ha van 2 órád, végigolvasni is megéri. Az újrafelhasználható komponensek (azaz Symbols) használata talán nem teljesen magától értetődő, de arról is van doksi.
  • A gyorsbillentyűk használata sokat dobhat a tempón.
  • A fájlnevekhez már az elején találj ki egy elnevezési konvenciót. Ez azért fontos, hogy az oldalak közötti linkelés tisztán fájlnév alapján megy (nincs projekt fájl), és ha átnevezel egy fájlt a diszken, nem fognak működni a rá mutató linkek.

Honlap: http://balsamiq.com

Infragistics Indigo Studio

Az Indigo Studio egy pár hete megjelent új eszköz, ami a Balsamiq monopóliumát igyekszik megdönteni az alábbiakkal:

  • Szebb, élethűbb mockupok készíthetők vele (bár szerintem ez nem előny).
  • Képes összetettebb interakciókra és animációkra.
  • Tud Balsamiq fájlt importálni (ez mekkora ötlet ;-).
  • A V1 verzió ingyenes és az is marad, majd csak annak kell fizetni, aki a V2 verziót akarja használni. Ez egy érdekes megoldás arra, hogy egy új termék betörjön a piacra (még érdekesebb lenne, ha a letöltés egyszerűbb lenne).

Az első ismerkedéshez készítettek egy 6 részes videó sorozatot, szerintem azzal érdemes kezdeni.

Mivel futó projektjeinkben nem akarunk váltani, ezért még nem ástam bele magam az Indigo Studio használatába, de majd a következő projekt előtt megnézem. Van már vele valakinek gyakorlati tapasztalata?

Visual Studio 2012

A VS 2012 egyik rejtett szépsége, hogy beépít a PowerPointba egy Storyboarding nevű fület, amely olyan elemeket tartalmaz, amiket akár mockup rajzolásra is használhatunk. Azért “akár”, mert ahogy a neve is mutatja, itt nem kifejezetten a UI a fontos, hanem a felhasználáshoz kapcsolódó sztori.

powerpoint-storyboard-shapes

A panel alján található Find more Storyboard Shapes online link a Visual Studio Gallery Storyboard Shapes kategóriájába visz, ahonnan további rajzelemeket tölthetünk le. Ez a kategória egyelőre nem tartalmaz sok elemet, de azért vannak már használhatók, természetesen némelyik fizetős. Itt van például a Windows8Templates:

Windows8Templates-Storyboard-Shapes-Capture1

A PowerPoint óriási előnye, hogy alig kell tanulni a használatát, ráadásul minden gépen elérhető. Ha bővülne a közösségi kínálat, gyorsan nagyon használhatóvá válna.

Pár bevezető link:

 

Ti szoktatok mockupolni, és ha igen, milyen eszközt használtok mockup elkészítésére?

 

Meghalt a BIDS, éljen az SSDT BI!

Az SQL Server csapat tegnap bejelentette, hogy letölthető a Visual Studiohoz az a kiegészítés, aminek segítségével Reporting, Analysis és Integration Services projekteket készíthetünk a 2012-es verzióban.

ssdt-bi

A korábban Business Intelligence Development Studio néven futó csomag mostantól SQL Server Data Tools – Business Intelligence (SSDT BI) néven érhető el, és mindenféle upgrade/downgrade nélkül képes kezelni a VS 2010-ben készült projekteket, tehát immár nem szükséges csak emiatt telepítenünk a Studio korábbi verzióját.

A bejelentés: http://blogs.msdn.com/b/sqlrsteamblog/archive/2013/03/06/sql-server-data-tools-business-intelligence-for-visual-studio-2012-released-online.aspx

Letöltés (782 MB): http://www.microsoft.com/en-us/download/details.aspx?id=36843

 

Technorati-címkék: ,

Alkalmazásfejlesztés Windows RT tableten

Most, hogy hivatalosan is megjelent a Windows 8 és elérhetővé váltak a Windows RT-t futtató tabletek, végre nem csak az emulátoron próbálhatjuk ki az alkalmazásainkat, hanem valódi hardveren is. Ilyenkor persze azonnal felmerül a kérdés, hogyan kell tableten fejleszteni?

A legelső, amit érdemes tudnunk, hogy a Visual Studio nem fut ARM-os eszközön, hanem csak x86/x64 platformon. Helyette a Remote Tools for Visual Studio 2012-t kell letöltenünk és elindítanunk az eszközön. Ne akadjunk fenn azon, hogy egyáltalán nem tűnik Metrós alkalmazásnak, fog működni.

Térjünk vissza a Visual Studiohoz és az alkalmazás indításakor válasszuk a Remote Machine opciót:

remote-machine

Innentől kezdve szinte elrontani sem lehet: varázsló, távoli gép megadása, tűzfal nyitása, fejlesztői licenc igénylése stb.

Hasonlóan egyszerűen működik a távoli tesztelés és a profilozás is, melyekről bővebben Jason Zander cikkében olvashatunk.

 

Technorati-címkék: ,,