Использование ValueTuple с PackageReference в облачных сервисах Azure

Я пытаюсь преобразовать мои проекты c # от старого к новому стилю csproj, но это прерывает мой облачный сервис Azure во время выполнения, потому что ReferenceAssembly System.ValueTuple.dllкопируется вместо внедряющей сборки.

Это та же проблема, что и в этой закрытой / брошенной проблеме .

Поскольку мои проекты в настоящее время предназначены для .NET 4.6.2, проблема «разрешима», ориентируясь на .NET 4.7+, поскольку это происходит System.ValueTupleи, следовательно, не нужно ссылаться на нее как на пакет NuGet.

Я хотел бы избежать этой ситуации, если это возможно, в качестве:

  • Для этого требуется дополнительный шаг развертывания для установки времени выполнения .net 4.7+ для рабочих ролей, поскольку они поставляются с установленным .net 4.6.2. https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-guestos-update-matrix#family-5-releases
  • Это кажется «легким выходом», и я хотел бы знать, можно ли решить проблему иначе.

Дополнительное описание проблемы:

Я буду использовать:

  • refDLLдля:, packagessystem.valuetuple4.5.0 ef et461System.ValueTuple.dllи
  • libDLLдля packagessystem.valuetuple4.5.0lib et461System.ValueTuple.dll.

Они легко различимы, как refDLLи 40 кб и libDLLсоставляют 78 кб.

Фактический код и полный файл журнала сборки можно найти здесь: https://www.dropbox.com/s/kquv5voa19jfonz/AzureCloudService1.zip?dl=0

У меня есть решение struture следующим образом:

  • AzureCloudService1
  • WorkerRole1 (старый csproj)
  • WorkerRole2 (новый csproj)

После создания облачного сервиса

  • WorkerRole1inDebugесть libDLL.
  • WorkerRole2inDebug et461 имеет libDLL
  • AzureCloudService1objDebugWorkerRole1 имеет libDLL
  • AzureCloudService1objDebugWorkerRole2 имеет refDLL

Из журналов я заметил следующую разницу между WorkerRole1 и WorkerRole2.

WorkerRole1:

C:Usersjonassource
eposAzureCloudService1packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
CopyLocal = true
FusionName = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
HintPath = ..packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
ImageRuntime = v4.0.30319
MSBuildSourceProjectFile = C:Usersjonassource
eposAzureCloudService1WorkerRole1WorkerRole1.csproj
MSBuildSourceTargetName = BuiltProjectOutputGroupDependencies
OriginalItemSpec = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL
ReferenceAssembly = C:Usersjonassource
eposAzureCloudService1packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
ReferenceSourceTarget = ResolveAssemblyReference
ResolvedFrom = {HintPathFromItem}
Version = 4.0.3.0

WorkerRole2:

C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
CopyLocal = false
ExternallyResolved = true
FusionName = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
HintPath = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
ImageRuntime = v4.0.30319
MSBuildSourceProjectFile = C:Usersjonassource
eposAzureCloudService1WorkerRole2WorkerRole2.csproj
MSBuildSourceTargetName = BuiltProjectOutputGroupDependencies
NuGetPackageId = System.ValueTuple
NuGetPackageVersion = 4.5.0
NuGetSourceType = Package
OriginalItemSpec = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
Private = false
ReferenceAssembly = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
ReferenceSourceTarget = ResolveAssemblyReference
ResolvedFrom = {HintPathFromItem}
Version = 4.0.3.0

После поиска других проблем, связанных с различными трекерами Microsoft, я нашел это, что похоже на: https://github.com/dotnet/sdk/issues/1738 .

c#,azure,msbuild,azure-cloud-services,packagereference,

0

Ответов: 0

Использование ValueTuple с PackageReference в облачных сервисах Azure

Я пытаюсь преобразовать мои проекты c # от старого к новому стилю csproj, но это прерывает мой облачный сервис Azure во время выполнения, потому что ReferenceAssembly System.ValueTuple.dllкопируется вместо внедряющей сборки.

Это та же проблема, что и в этой закрытой / брошенной проблеме .

Поскольку мои проекты в настоящее время предназначены для .NET 4.6.2, проблема «разрешима», ориентируясь на .NET 4.7+, поскольку это происходит System.ValueTupleи, следовательно, не нужно ссылаться на нее как на пакет NuGet.

Я хотел бы избежать этой ситуации, если это возможно, в качестве:

  • Для этого требуется дополнительный шаг развертывания для установки времени выполнения .net 4.7+ для рабочих ролей, поскольку они поставляются с установленным .net 4.6.2. https://docs.microsoft.com/en-us/azure/cloud-services/cloud-services-guestos-update-matrix#family-5-releases
  • Это кажется «легким выходом», и я хотел бы знать, можно ли решить проблему иначе.

Дополнительное описание проблемы:

Я буду использовать:

  • refDLLдля:, packagessystem.valuetuple4.5.0 ef et461System.ValueTuple.dllи
  • libDLLдля packagessystem.valuetuple4.5.0lib et461System.ValueTuple.dll.

Они легко различимы, как refDLLи 40 кб и libDLLсоставляют 78 кб.

Фактический код и полный файл журнала сборки можно найти здесь: https://www.dropbox.com/s/kquv5voa19jfonz/AzureCloudService1.zip?dl=0

У меня есть решение struture следующим образом:

  • AzureCloudService1
  • WorkerRole1 (старый csproj)
  • WorkerRole2 (новый csproj)

После создания облачного сервиса

  • WorkerRole1inDebugесть libDLL.
  • WorkerRole2inDebug et461 имеет libDLL
  • AzureCloudService1objDebugWorkerRole1 имеет libDLL
  • AzureCloudService1objDebugWorkerRole2 имеет refDLL

Из журналов я заметил следующую разницу между WorkerRole1 и WorkerRole2.

WorkerRole1:

C:Usersjonassource
eposAzureCloudService1packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
CopyLocal = true
FusionName = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
HintPath = ..packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
ImageRuntime = v4.0.30319
MSBuildSourceProjectFile = C:Usersjonassource
eposAzureCloudService1WorkerRole1WorkerRole1.csproj
MSBuildSourceTargetName = BuiltProjectOutputGroupDependencies
OriginalItemSpec = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL
ReferenceAssembly = C:Usersjonassource
eposAzureCloudService1packagesSystem.ValueTuple.4.5.0lib
et461System.ValueTuple.dll
ReferenceSourceTarget = ResolveAssemblyReference
ResolvedFrom = {HintPathFromItem}
Version = 4.0.3.0

WorkerRole2:

C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
CopyLocal = false
ExternallyResolved = true
FusionName = System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
HintPath = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
ImageRuntime = v4.0.30319
MSBuildSourceProjectFile = C:Usersjonassource
eposAzureCloudService1WorkerRole2WorkerRole2.csproj
MSBuildSourceTargetName = BuiltProjectOutputGroupDependencies
NuGetPackageId = System.ValueTuple
NuGetPackageVersion = 4.5.0
NuGetSourceType = Package
OriginalItemSpec = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
Private = false
ReferenceAssembly = C:Usersjonas.nugetpackagessystem.valuetuple4.5.0
ef
et461System.ValueTuple.dll
ReferenceSourceTarget = ResolveAssemblyReference
ResolvedFrom = {HintPathFromItem}
Version = 4.0.3.0

После поиска других проблем, связанных с различными трекерами Microsoft, я нашел это, что похоже на: https://github.com/dotnet/sdk/issues/1738 .

00C #, лазурный, MSBuild, лазурные-облачные сервисы, packagereference,
Похожие вопросы