Paket dosyalarını ayıklamak için Nuge.Core
ile çalışan bir F # sahte komut dosyası var. Bunu C# konsol uygulaması ile yapmaya çalışırsam her şey düzgün çalışıyor. Ancak tam olarak aynı betiği bir # fake betiğinde çalıştırırsam, çalışmaz.f # betiğinde C# kodu yürütme beklenmedik bir davranışa sahiptir
nuget.core
İhtiyacınız C# örneği için Docker.DotNet.2.124.3.nupkg
indirmenize gerek bu çoğaltmak için docker.dotnet
, fake
, f#
: Orada burada bu kadar çok bağımlılıkları vardır ve nerede bir yardım aramak için hiçbir fikrim yok konsol uygulaması ve nuget.core
nuget paketini yükleyin. Bu çalışıyor! f # numunesi için
class Program
{
static void Main()
{
var zip = new NuGet.ZipPackage(@"Docker.DotNet.2.124.3.nupkg");
foreach (var file in zip.GetFiles())
{
System.Console.WriteLine(file.Path);
}
}
}
Eğer yan bu iki dosya yan gerekir: https://gist.github.com/mynkow/e6f0e550fcacc268dd1e9b743e17d344
HATA: Tüm olası bağımlılıkları 5 en son sürümleri ile çalıştık
==============================================================================
FsiEvaluationException:
Error: System.InvalidOperationException: 'NETStandard.Library' already has a dependency defined for 'Microsoft.NETCore.Platforms'.
at NuGet.Manifest.ValidateDependencySets(IPackageMetadata metadata)
at NuGet.Manifest.Validate(Manifest manifest)
at NuGet.Manifest.ReadFrom(Stream stream, IPropertyProvider propertyProvider, Boolean validateSchema)
at NuGet.LocalPackage.ReadManifest(Stream manifestStream)
at NuGet.ZipPackage.EnsureManifest(Func`1 manifestStreamFactory)
at NuGet.ZipPackage..ctor(String filePath, Boolean enableCaching)
at <StartupCode$FSI_0005>[email protected]() in C:\Users\mynkow\Desktop\Reproduce\test.fsx:line 12
Stopped due to error
Output: [Loading C:\Users\mynkow\Desktop\Reproduce\test.fsx]
==============================================================================
Input: C:\Users\mynkow\Desktop\Reproduce\test.fsx
\Arguments:
C:\fsi.exe
Exception: Yaaf.FSharp.Scripting.FsiEvaluationException: Error while compiling or executing fsharp snippet. ---> System.Exception: Operation failed. The error text has been print the error stream. To return the corresponding FSharpErrorInfo use the EvalInteractionNonThrowing, EvalScriptNonThrowing or EvalExpressionNonThrowing
at Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.commitResult[a,b](FSharpChoice`2 res)
at Microsoft.FSharp.Compiler.Interactive.Shell.FsiEvaluationSession.EvalScript(String filePath)
at [email protected](String arg00) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1303
at [email protected](Unit unitVar0) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1277
at Yaaf.FSharp.Scripting.Helper.consoleCapture[a](TextWriter out, TextWriter err, FSharpFunc`2 f) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1221
at [email protected][a](Boolean preventStdOut, OutStreamHelper out, OutStreamHelper err, FSharpFunc`2 f) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1254
at [email protected](String text) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1276
--- End of inner exception stack trace ---
at [email protected](String text) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1284
at [email protected]IFsiSession-EvalScriptWithOutput(String) in C:\code\FAKE\paket-files\matthid\Yaaf.FSharp.Scripting\src\source\Yaaf.FSharp.Scripting\YaafFSharpScripting.fs:line 1308
at Fake.FSIHelper.runScriptUncached(Boolean useCache, String scriptPath, IEnumerable`1 fsiOptions, Boolean printDetails, CacheInfo cacheInfo, TextWriter out, TextWriter err) in C:\code\FAKE\src\app\FakeLib\FSIHelper.fs:line 471
System.InvalidOperationException: 'NETStandard.Library' already has a dependency defined for 'Microsoft.NETCore.Platforms'.
at NuGet.Manifest.ValidateDependencySets(IPackageMetadata metadata)
at NuGet.Manifest.Validate(Manifest manifest)
at NuGet.Manifest.ReadFrom(Stream stream, IPropertyProvider propertyProvider, Boolean validateSchema)
at NuGet.LocalPackage.ReadManifest(Stream manifestStream)
at NuGet.ZipPackage.EnsureManifest(Func`1 manifestStreamFactory)
at NuGet.ZipPackage..ctor(String filePath, Boolean enableCaching)
at <StartupCode$FSI_0005>[email protected]() in C:\Users\mynkow\Desktop\Reproduce\test.fsx:line 12
Stopped due to error
ve sonuçlar tam olarak aynı => C# çalışıyor, f # değil. Bunu düzeltmek için bana tavsiyede bulunabilecek herhangi bir fikrin var mı?
KİRLİ ÇÖZÜM:
Ben netstandard1.6
her şey çalışıyor örneğin kaldırırsanız Docker.DotNet.2.124.3.nupkg inside
nasıl göründüğünü budur. Bu, sorunun nuget.core
'da olduğu anlamına gelir, değil mi? Ama neden C# konsol uygulamasında çalışıyor? Fikrim yok!
GÜNCELLEME: Ben PAKET ile paketleri indirdikten
Her iki durumda da 'NuGet' kitaplığının aynı sürümüne başvurduğunuzdan emin misiniz? –
evet, verilen örneklerde bu net değil, ancak kontrol edilmesi gereken ilk şeydi. Ayrıca her bağımlılığın birden çok versiyonunu denedim. – mynkow
Komut dosyanızı bunun yerine fsi.exe ile çağırmayı deneyebilir misiniz? FAKE ile değil, FAKE ile çalışıyorsa, FAKE github deposunda bir hatayı günlüğe kaydetmek isteyebilirsiniz. Teşekkürler! – smoothdeveloper