[C#] Translation file kan niet gegenereerd worden

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 02-09 09:14
EDIT: Sorry voor de fout in titel. Een mod die dit kan aanpassen?

Ik heb een translation file die zou moeten werken in C#.

Ik heb een werkende versie in VB.NET

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<#@ template debug="false" hostspecific="true" language="VB" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ output extension=".vb" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Xml.Linq" #>
<#

Dim inputFile= Path.ChangeExtension(Host.TemplateFile, "resx")
Dim xml As XElement = XElement.Load(Host.ResolvePath(inputFile))
Dim dataElements = xml.Elements().Where(Function(x) x.Name = "data")
Dim resourceTypeName = Path.GetFileNameWithoutExtension(inputFile)
#>

' This file is autogenerated
Public Class <#= resourceTypeName #>Constants

<# For Each d as XElement in dataElements #>
 Public Const <#= d.@name #> As String = "<#= d.@name #>"
<# Next #>

End Class


Ik probeer deze dus om te zetten naar c#.
Maar deze kan niet builden omdat ik volgende fout krijg

Compiling transformation: ; expected en dit op volgende rij public class <# resourceTypeName #>Contstants
Ik vraag mij af waar hij ; verwacht. Iemand die me kan helpen?

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<#@ template language="C#" #>
<#@ assembly name="System" #>
<#@ assembly name="System.Core" #>
<#@ assembly name="System.Xml" #>
<#@ assembly name="System.Xml.Linq" #>
<#@ output extension=".cs" #>
<#@ import namespace="System" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Xml.Linq" #>
<#
dynamic inputFile = Path.ChangeExtension(Host.TemplateFile, "resx");
XElement xml = XElement.Load(Host.ResolvePath(inputFile));
dynamic dataElements = xml.Elements().Where(x => x.Name == "data");
dynamic resourceTypeName = Path.GetFileNameWithoutExtension(inputFile);
#>

//This file is autogenerated

public class <# resourceTypeName #>Contstants
{
foreach (XElement d in dataElements) {
    public Const String  <#= d.@name #> = "<#= d.@name #>";
}
}

Acties:
  • 0 Henk 'm!

  • Koppensneller
  • Registratie: April 2002
  • Laatst online: 17-09 22:56

Koppensneller

winterrrrrr

Ik heb hier verder weinig verstand van (wel C#, niet dit soort dingen), maar het zit hem niet in de verkeerde spelling van Constants?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Het kan aan mij liggen maar C# kent toch helemaal geen import :? Dat is using.

Oh; je hebt een template in VB.Net en wil C# uitpoepen? Het was wel handig geweest als je even had vermeld dat 't om T4 templates ging.

edit: Op 't oog moet:
code:
1
public class <# resourceTypeName #>Contstants

Dit zijn:
code:
1
public class <#= resourceTypeName #>Contstants

Zoek de verschillen :Y)
Het zou wel fijn zijn als je je even verdiept in de basics voordat je met een topic komt. <#= is een "echo"/"print"/"response.write"/wat_jij_wil, <# is gewoon openen van een codeblock.

[ Voor 63% gewijzigd door RobIII op 18-07-2011 13:52 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 02-09 09:14
@KoppenSneller: is inderdaad fout geschreven. Maar hier is dit nog niet zo erg.
Daar het maar gaat om de class naam.

@Roblll: Inderdaad in gewone code moet je import gebruiken. Maar het is inderdaad een T4 template.
Dit had ik inderdaad moeten vermelden.

Ik heb een VB template die werkt. Maar wil deze converteren naar een C# Template. Ben project in c# aan het schrijven. ( Ben mij wat aan het omscholen richting C# )

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Sven_Vdb schreef op maandag 18 juli 2011 @ 13:04:
code:
1
2
3
4
5
6
public class <# resourceTypeName #>Contstants
{
foreach (XElement d in dataElements) {
    public Const String  <#= d.@name #> = "<#= d.@name #>";
}
}
Ik heb geen ervaring met T4 templates, maar dit lijkt me niet correct. Als ik naar je VB.NET voorbeeld kijkt zie ik dat je daar de foreach wel escaped zodat het bij de template logica, en niet output hoort, maar dat doe je hier niet.
code:
1
2
3
4
5
6
public class <#= resourceTypeName #>Contstants
{
<# foreach (XElement d in dataElements) { #>
    public Const String  <#= d.@name #> = "<#= d.@name #>";
<# } #>
}

o.i.d. lijkt me dan ook logischer ( En natuurlijk de <#= in plaats van <# zoals RobIII al aangeeft )

[ Voor 4% gewijzigd door Woy op 18-07-2011 15:25 ]

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Verander anders je template even in een preprocessed template. Dan zie je de code die wordt uitgepoept, wil wel eens helpen.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Sven_Vdb
  • Registratie: Januari 2006
  • Laatst online: 02-09 09:14
Grijze Vos schreef op dinsdag 19 juli 2011 @ 12:11:
Verander anders je template even in een preprocessed template. Dan zie je de code die wordt uitgepoept, wil wel eens helpen.
Wat bedoel je daar juist mee?

Heb de voorgaande punten aangepast. Maar nu krijg ik volgende foutmelding.

A namespace cannot directly contain members such as fields or methods

Acties:
  • 0 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
En wat denk je zelf dat dat inhoud? We gaan hier niet voor jou debuggen. Begin anders eens met een nog simpelere situatie en ga dat rustig opbouwen.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1