@@ -81,6 +81,22 @@ Function New-BcNuGetPackage {
81
81
$stream.Write ($bytes , 0 , $bytes.Length )
82
82
}
83
83
84
+ function CalcPackageId ([string ] $packageIdTemplate , [string ] $publisher , [string ] $name , [string ] $id , [string ] $version ) {
85
+ $name = [nuGetFeed ]::Normalize($name )
86
+ $publisher = [nuGetFeed ]::Normalize($publisher )
87
+ $packageId = $packageIdTemplate.replace (' {id}' , $id ).replace(' {name}' , $name ).replace(' {publisher}' , $publisher ).replace(' {version}' , $version )
88
+ if ($packageId.Length -ge 100 ) {
89
+ if ($name.Length -gt ($packageId.Length - 99 )) {
90
+ $name = $name.Substring (0 , $name.Length - ($packageId.Length - 99 ))
91
+ }
92
+ else {
93
+ throw " Package id is too long: $packageId , unable to shorten it"
94
+ }
95
+ $packageId = $packageIdTemplate.replace (' {id}' , $id ).replace(' {name}' , $name ).replace(' {publisher}' , $publisher ).replace(' {version}' , $version )
96
+ }
97
+ return $packageId
98
+ }
99
+
84
100
Write-Host " Create NuGet package"
85
101
Write-Host " AppFile:"
86
102
Write-Host $appFile
@@ -118,7 +134,7 @@ Function New-BcNuGetPackage {
118
134
}
119
135
}
120
136
$appJson = Get-AppJsonFromAppFile - appFile $appFile
121
- $packageId = $packageId.replace ( ' {id} ' , $appJson.id ).replace( ' { name} ' , [ nuGetFeed ]::Normalize( $appJson.name )).replace( ' {publisher} ' , [ nuGetFeed ]::Normalize( $appJson.publisher )).replace( ' { version} ' , $appJson.version.replace (' .' , ' -' ) )
137
+ $packageId = CalcPackageId - packageIdTemplate $packageId - publisher $appJson.publisher - name $appJson.name - id $appJson.id - version $appJson.version.replace (' .' , ' -' )
122
138
if ($null -eq $packageVersion ) {
123
139
$packageVersion = [System.Version ]$appJson.version
124
140
}
@@ -174,7 +190,7 @@ Function New-BcNuGetPackage {
174
190
$XmlObjectWriter.WriteStartElement (" dependencies" )
175
191
if ($appJson.PSObject.Properties.Name -eq ' dependencies' ) {
176
192
$appJson.dependencies | ForEach-Object {
177
- $id = $dependencyIdTemplate.replace ( ' {id} ' , $_.id ).replace( ' {name} ' , [ nuGetFeed ]::Normalize( $_.name )) .replace(' {publisher} ' , [ nuGetFeed ]::Normalize( $_ .publisher ) )
193
+ $id = CalcPackageId - packageIdTemplate $dependencyIdTemplate - publisher $_ .publisher - name $_.name - id $_ .id - version $_.version .replace (' . ' , ' - ' )
178
194
$XmlObjectWriter.WriteStartElement (" dependency" )
179
195
$XmlObjectWriter.WriteAttributeString (" id" , $id )
180
196
$XmlObjectWriter.WriteAttributeString (" version" , $_.Version )
@@ -195,7 +211,7 @@ Function New-BcNuGetPackage {
195
211
}
196
212
if ($isIndirectPackage.IsPresent ) {
197
213
$XmlObjectWriter.WriteStartElement (" dependency" )
198
- $id = $runtimeDependencyId.replace ( ' {id} ' , $appJson.id ).replace( ' { name} ' , [ nuGetFeed ]::Normalize( $appJson.name )).replace( ' {publisher} ' , [ nuGetFeed ]::Normalize( $appJson.publisher )).replace( ' { version} ' , $appJson.version.replace (' .' , ' -' ) )
214
+ $id = CalcPackageId - packageIdTemplate $runtimeDependencyId - publisher $appJson.publisher - name $appJson.name - id $appJson.id - version $appJson.version.replace (' .' , ' -' )
199
215
$XmlObjectWriter.WriteAttributeString (" id" , $id )
200
216
$XmlObjectWriter.WriteAttributeString (" version" , ' 1.0.0.0' )
201
217
$XmlObjectWriter.WriteEndElement ()
0 commit comments