[ Shadowed @ 09.02.2008. 21:35 ] @
U pitanju je Visual Studio 2008, asp.net aplikacija koja radi sa .net framework-om 2.0.

Imam u jednoj klasi privatnu promenljivu - Private _ParentID as Integer?. Ima i property istog tipa, obican get/set.
Kada idem na Build > Build website prodje normalno, kada probam da otvorim iz browser-a dobijem Compilation Error:
Compiler Error Message: BC30037: Character is not valid.
Sa obelezenom tom linijom gde je deklarisana privatna promenljiva.

Sad sam upravo probao da umesto na taj nacin deklarisem kao Nullable(Of Integer) i u tom slucaju prodje (ne odgovara mi ovako, ali cisto sam hteo probati). Samo sto mi se tu javlja problem na drugom mestu kada sam imao Return (_ParentID Is Nothing)

Nikako ne kapiram u cemu je problem, s' obzirom da mi sve deluje ispravno. Plus sto mi VS ne prijavljuje gresku a kada pokrenem iz browsera dobijem pomenutu.
Inace, i VS ima neke cudne tripove. Recimo kada sam deklarisao kao Nullable(Of Integer), nije hteo da kompajlira ali ne prikazuje gde je greska (0 errors, 0 warnins)...
[ mmix @ 10.02.2008. 12:29 ] @
To su sve ispravne 2.0+ konstrukcije. Pogledaj u IIS-u da ti asp.net aplikacija nije podesena da radi sa .NET1.1 frameworkom....
[ Shadowed @ 10.02.2008. 12:52 ] @
Nije IIS, to je iz VS-a, debug.

Edit: Evo probao sam sada i preko IIS-a. Stoji ASP.NET Version: 2.0.50727 (drugu mi i ne nudi). Ista stvar, ista greska na istoj liniji.
[ mmix @ 10.02.2008. 13:16 ] @
Ajd okaci samo to parcence koda, ja nekako ne uspevam da reprodukujem tu gresku.
[ Shadowed @ 10.02.2008. 13:27 ] @
Code:

Public Class Category
    Private _ID As Integer
    Private _ParentID As Integer?
    Private _Name As String
    Private _OwnerID As Guid
    Private _Tags As List(Of String)

'Onda za svaku od ovih promenljivih imam property sa get/set, navescu samo za tu promenljivu:

    Public Property ParentID() As Integer?
        Get
            Return _ParentID
        End Get
        Set(ByVal value As Integer?)
            _ParentID = value
        End Set
    End Property

'Konstruktor:

    Public Sub New(ByVal ID As Integer, ByVal Name As String, ByVal ParentID As Integer, ByVal OwnerID As Guid, ByVal Tags As List(Of String))
        _ID = ID
        _Name = Name
        _ParentID = ParentID
        _OwnerID = OwnerID
        _Tags = Tags
    End Sub

'I jedan metod:

    Public Function GetParent() As Category
        If Me.IsRoot Then
            Return Nothing
        Else
            Return DBWorks.GetCategory(Me._ParentID)
        End If
    End Function
End Class


Edit. Sada, kada probam Start Debugging u VS-u, kaze da postoje greske ali u errors/warnings listi nema nicega, s' tim da u Output prozoru imam ukazano na svaku od tih linija gde imam nullable deklaraciju (promenljiva, property i DBWorks.GetCategory() )
[ mmix @ 10.02.2008. 13:47 ] @
Kod mene prolazi sasvim fino. Nesto ti je do instalacije VS-a
[ Shadowed @ 10.02.2008. 13:54 ] @
Ali me cudi zasto onda isti problem pravi i iis. Probacu repair danas/sutra pa cu videti, mada nisam bas optimista.
Sto se meni stalno desavaju ovak'e gluposti...
[ mmix @ 10.02.2008. 14:02 ] @
Predji na C#
[ maksvel @ 10.02.2008. 22:12 ] @
Ovaj, je l' sigurno može Nullable da se predstavi i u VB skraćeno sa "tip?"? Meni odmah stavlja grešku u web-Developer-u "Character is not valid".
Hm, to ima veze sa verzijom framework-a, ne? Kao da Studio "pregleda po novom", a kompilacija radi po starom
[ Shadowed @ 10.02.2008. 23:02 ] @
MSDN kaze:
You can write the declaration in three ways:
Code:

Dim ridesBusToWork1? As Boolean
Dim ridesBusToWork2 As Boolean?
Dim ridesBusToWork3 As Nullable(Of Boolean)


E sad, to je MSDN dobijen uz VS2008 a tu ne pise na koji se VB odnosi i ja bih poverovao da u VB2005 ne moze taj nacin, sa ? pogotovo sto i ovaj tekst govori tako nesto ali kako onda mmix-u radi??
Mmix, jesi stavio da je 2.0 target framework?
[ Shadowed @ 11.02.2008. 00:39 ] @
Yep, na ekvivalentu te strane za Framework 2.0 navodi samo deklaraciju kao Nullable(of type). http://msdn2.microsoft.com/en-us/library/ms235245(VS.80).aspx

Sad ostaje samo pitanje kako je mmix to izveo, mada me od njega ne bi cudilo da je zeznuo MS :]

Bah, bas je ruzno ovako. A dvoumio sam se zbog jos nekih stvari (linq) da radim sa 3.5, ali pretpostavljam da jos uvek nije zastupljen dovoljno (radim aplikaciju za "serijsku proizvodnju", ne za jednog klijenta).
[ mmix @ 11.02.2008. 11:54 ] @
Citat:
Shadowed: Sad ostaje samo pitanje kako je mmix to izveo, mada me od njega ne bi cudilo da je zeznuo MS :]


Ako koza laze, rog ne laze Zakacen se sample projekat asp.net aplikacija radjena za target 2.0 i koristi Integer?

[ Shadowed @ 11.02.2008. 12:28 ] @
Probaj staviti u App_Code. To je jedina razlika koju vidim u odnosu na moj projekat.

BTW, sta ce
Code:

<add namespace="System.Linq"/>
<add namespace="System.Xml.Linq"/>

u web.config-u za 2.0 :)
Isto i u .proj fajlu. Mada stoji da je target framework 2.0 u tom istom .proj fajlu (sve sam gledao iz winrar viewer-a, nisam otvrao u VS-u, ne mogu sada). To se meni desavalo kada naknadno promenim framework umesto kada ga odredim prilikom kreiranja projekta. Pretpostavljam da je to neki bug u VS-u.
[ mmix @ 11.02.2008. 12:30 ] @
DIjagnosticki govoreci, to ne moze biti do verzije frameworka, bez obzira na verziju 2.0, 3.0 ili 3.5, framework barata sa MSILom koji nulable tipove uvek deklarise sa Nullable<type>.
? je kompajlerska logika i ako se ne prepoznaje onda je to do kompajlera nesto. Iako vs2008 moze da bira target, on efektivno za sve targete koristi isti kompajler, znate zasto? Zato sto .net 3.0 i 3.5 nisu prave verzije .NETa nego su najboljem slucaju verzije 2.1 i 2.2. Za sve tri verzije se koristi IDENTICAN CLS/CLI baziran na verziji 2.0. Jedino sto se menja odabriom targeta je koje ce verzije assemblija biti ukljucene u reference i sta ce od UI elemenata biti dostupno (npr nema WCF-a pod 2.0). Samim tim kompajler zna sta je ? bez obzira sto u visual studiu 2005 nije znao.

Jednostavan trik, pogledaj output window pri bildu i vidi putanju do VBC.exe fajla. Ako nije "C:\WINDOWS\Microsoft.NET\Framework\v3.5\Vbc.exe" onda ti VS podize bajati kompajler
[ mmix @ 11.02.2008. 12:37 ] @
Citat:
Shadowed: Probaj staviti u App_Code. To je jedina razlika koju vidim u odnosu na moj projekat.


E to je puklo. Ali evo i objasnjenja, pogledaj u Detailed compiler output:

Code:

c:\windows\system32\inetsrv> "C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\vbc.exe" /t:library /utf8output ....

Microsoft (R) Visual Basic Compiler version 8.0.50727.1433
for Microsoft (R) .NET Framework version 2.0.50727.1433
Copyright (c) Microsoft Corporation.  All rights reserved.

C:\Projects\WindowsApplication2005\SampleVBASP\App_Code\Class1.vb(2) : error BC30037: Character is not valid.

    Private _ParentID As Integer?
                                ~


Koja verzija kompajlera prevodi? 2.0

Resenje je jednostavno, ne stavljaj code u App_Code, to ti nije neophodno i sluzi samo da mozes code da menjas on-the-fly bez rebuild-a sajta. Najelegantnije resenje je da sve klase potrpas u poseban class library projekat i da ga referenciras sa sajta.
[ Shadowed @ 11.02.2008. 13:08 ] @
Da, jasno, samo sam ja u pocetku mislio da bi upravo 2.0 kompajler trebao da prevodi dobro. Ovo mi deluje glupo sto koristi drugaciji kompajler ako je kod u app_code i ako nije.
Mislim da cu na kraju i uraditi tako sa dva projekta. Zapravo nisam hteo jer koristim i source safe pa mi delovalo da cu zakomplikovati nesto :)

Sta mislis koliko je dobra ideja raditi sa najnovijom verzijom i vb-a i framework-a? Znam da zavisi od vrste projekta, al' malo to nisam sada u mogucnosti da objavljujem ovde...
[ mmix @ 11.02.2008. 15:30 ] @
To ne zavisi od projekta nego od toga da li si u stanju ili ne da na mestu instalacije pustis novi framework. Ako je dozvoljeno polisama, onda jednostavno ukljucis framework u instalaciju i vozis najnovije

Problem je sto asp.net nema handler za iznad v2.0, tako da je code u app_code UVEK za kompajler iz v2.0 cak i da imas instaliran framework 3.5 opet ce kod iz tog foldera biti kompajliran sa 2.0 kompajlerom, sto je po meni totalna glupost.

Inace, app_code sors se prevodi sa drugim kompajlerom zato sto njega ne prevodi visual studio, nego sam asp.net.