Eto: Linux์—์„œ ์‚ฌ์†Œํ•œ ๊ฒฝ์šฐ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2018๋…„ 04์›” 06์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: picoe/Eto

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘

๋‚˜๋Š” dotnet์œผ๋กœ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค

์‹ค์ œ ํ–‰๋™

dotnet์œผ๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„

  1. dotnet-sdk-2.0.0 ์„ค์น˜
  2. ๋ชจ๋…ธ ๊ฐœ๋ฐœ ์„ค์น˜
  3. ์„ค์น˜ ์™„๋ฃŒ
  4. dotnet new -i "Eto.Forms.Templates::*"
  5. ๋‹ท๋„ท ์ƒˆ๋กœ์šด etoapp -g -sln
  6. ๋‹ท๋„ท ๋ณต์›
  7. ๋‹ท๋„ท ๋นŒ๋“œ

๋ฌธ์ œ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ฝ”๋“œ

[alan<strong i="19">@localhost</strong> Testing]$ dotnet new etoapp -g -sln
The template "Eto App" was created successfully.
[alan<strong i="20">@localhost</strong> Testing]$ dotnet restore
  Restoring packages for /home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj...
  Restoring packages for /home/alan/Documents/Testing/Testing/Testing.csproj...
  Generating MSBuild file /home/alan/Documents/Testing/Testing.Desktop/obj/Testing.Desktop.csproj.nuget.g.props.
  Generating MSBuild file /home/alan/Documents/Testing/Testing.Desktop/obj/Testing.Desktop.csproj.nuget.g.targets.
  Generating MSBuild file /home/alan/Documents/Testing/Testing/obj/Testing.csproj.nuget.g.props.
  Generating MSBuild file /home/alan/Documents/Testing/Testing/obj/Testing.csproj.nuget.g.targets.
  Restore completed in 302.81 ms for /home/alan/Documents/Testing/Testing/Testing.csproj.
  Restore completed in 296.78 ms for /home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj.
[alan<strong i="21">@localhost</strong> Testing]$ dotnet build
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.

  Testing -> /home/alan/Documents/Testing/Testing/bin/Debug/netstandard1.6/Testing.dll
  Testing.Desktop -> /home/alan/Documents/Testing/Testing.Desktop/bin/Debug/net461/Testing.Desktop.exe
  Creating Testing.Desktop.app in target directory
/home/alan/.nuget/packages/eto.platform.mac64/2.4.0/build/MacTemplate.targets(115,3): error : MSB4801: The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild. [/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj]
/home/alan/.nuget/packages/eto.platform.mac64/2.4.0/build/MacTemplate.targets(115,3): error MSB4036: The "_UpdatePList" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "/usr/share/dotnet/sdk/2.0.0" directory. [/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj]

Build FAILED.

/home/alan/.nuget/packages/eto.platform.mac64/2.4.0/build/MacTemplate.targets(115,3): error : MSB4801: The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild. [/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj]
/home/alan/.nuget/packages/eto.platform.mac64/2.4.0/build/MacTemplate.targets(115,3): error MSB4036: The "_UpdatePList" task was not found. Check the following: 1.) The name of the task in the project file is the same as the name of the task class. 2.) The task class is "public" and implements the Microsoft.Build.Framework.ITask interface. 3.) The task is correctly declared with <UsingTask> in the project file, or in the *.tasks files located in the "/usr/share/dotnet/sdk/2.0.0" directory. [/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.csproj]
    0 Warning(s)
    2 Error(s)

ํŠนํžˆ ์ด ์ค„์ด ์ค‘์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.
The task factory "CodeTaskFactory" is not supported on the .NET Core version of MSBuild.

๋ช…์„ธ์„œ

  • ๋ฒ„์ „: 2.4.0
  • ํ”Œ๋žซํผ: (Fedora Gtk3)

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@voronoipotato ์†”๋ฃจ์…˜ ํŒŒ์ผ์ด ์•„๋‹Œ .csproj ํŒŒ์ผ์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์— Mac ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ํ•ญ์ƒ Linux์—์„œ ๋นŒ๋“œํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : WebView์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋„คํŠธ ์ฝ”์–ด์—์„œ ์—†๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @cra0zy ๊ฐ€ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”.... WebView๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒƒ์ด .NET Core์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  16 ๋Œ“๊ธ€

๋ฌธ์ œ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ dotnet build msbuild ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋‚ด๊ฐ€ F#์— ๋Œ€ํ•ด ๊ฐ™์€ ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์„ ๋•Œ
dotnet new etoapp -g -sln -lang F#
๊ทธ๋Ÿฌ๋ฉด ๋‚˜๋Š” ์–ป๋Š”๋‹ค

/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.fsproj(124,5): error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ../packages/Eto.Forms.2.4.0/build/Eto.Forms.targets.
Done Building Project "/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.fsproj" (default targets) -- FAILED.
Done Building Project "/home/alan/Documents/Testing/Testing.sln" (default targets) -- FAILED.

Build FAILED.

"/home/alan/Documents/Testing/Testing.sln" (default target) (1) ->
"/home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.fsproj" (default target) (3) ->
(EnsureNuGetPackageBuildImports target) -> 
  /home/alan/Documents/Testing/Testing.Desktop/Testing.Desktop.fsproj(124,5): error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them.  For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ../packages/Eto.Forms.2.4.0/build/Eto.Forms.targets.

    0 Warning(s)
    1 Error(s)

msbuild์™€ ํ•จ๊ป˜.

dotnet build๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‚ด์šฉ์„ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@voronoipotato nuget restore .
NuGet ๋ช…๋ น์€ mono-complete๋กœ ์„ค์น˜ํ•ด์•ผ ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณ„๋„๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Linux ํ”Œ๋žซํผ๋งŒ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ Eto.Platform.Gtk nuget ๋ฐ target netcoreapp2.0์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ dotnet build ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋‚ด csproj์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Eto.Platform.Gtk" Version="2.4.1" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Eto.Desktop\Eto.Desktop.csproj" />
  </ItemGroup>

</Project>

์ฐธ๊ณ : WebView ์™€ ๊ฐ™์ด ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ๋„ท ์ฝ”์–ด์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@voronoipotato ์†”๋ฃจ์…˜ ํŒŒ์ผ์ด ์•„๋‹Œ .csproj ํŒŒ์ผ์„ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์— Mac ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ํ•ญ์ƒ Linux์—์„œ ๋นŒ๋“œํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : WebView์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋„คํŠธ ์ฝ”์–ด์—์„œ ์—†๊ฑฐ๋‚˜ ์ž‘๋™ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. @cra0zy ๊ฐ€ ์ด์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„๋‹ˆ์š”.... WebView๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒƒ์ด .NET Core์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜์— Mac ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋œ ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ํ•ญ์ƒ Linux์—์„œ ๋นŒ๋“œํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์‹ค, ๊ทธ๊ฒƒ์€ ์ž˜๋ชป๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. mac ํ”„๋กœ์ ํŠธ๋Š” ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” MonoMac ํ”„๋กœ์ ํŠธ ์œ ํ˜•์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  sdk ์Šคํƒ€์ผ csproj๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Eto์˜ nuget ํŒจํ‚ค์ง€์—๋Š” ์ด์ œ Windows ๋˜๋Š” Linux์—์„œ๋„ .app ๋ฒˆ๋“ค์„ ๋นŒ๋“œํ•˜๋Š” .targets ํŒŒ์ผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ ํƒ์  Xamarin.Mac ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ์ „ํžˆ Mac์—์„œ๋งŒ ๋นŒ๋“œ๋ฉ๋‹ˆ๋‹ค.

dotnet build๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋‚ด์šฉ์„ ๋น ๋ฅธ ์‹œ์ž‘ ๊ฐ€์ด๋“œ์— ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์™„๋ฃŒ! ์˜ˆ์ œ์— nuget restore ๋ฐ msbuild ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ๋žŒ๋“ค์ด ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉํ–ฅ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•„, ํ”Œ๋žซํผ๋ณ„ ์†”๋ฃจ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•„์ง ์ƒˆ ํ…œํ”Œ๋ฆฟ์„ ์‹ค์ œ๋กœ ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@voronoipotato ๊ฐ€ ์ด์ œ nuget/msbuild๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘๋™ํ•ฉ๋‹ˆ๊นŒ?

๋‚˜๋Š” ๋˜ํ•œ ๋ฏธ๋ž˜์— dotnet build ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด .targets ํŒŒ์ผ์„ ์ด์‹ํ•˜๊ธฐ ์œ„ํ•ด #1080์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋„ ํ•˜์ฐฎ์€ ์ผ€์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์žฌํ˜„ ๋‹จ๊ณ„

mkdir -p eto-test
cd eto-test
dotnet new -i "Eto.Forms.Templates::*"
dotnet new etoapp -lang F#
nuget restore
msbuild

๋ฌด์Šจ ์ผ์ด์•ผ

Microsoft (R) Build Engine version 15.4.0.0 ( Wed Nov 29 14:47:19 UTC 2017) for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 4/13/2018 9:34:26 AM.
Project "[โ€ฆ]/eto-test/eto-test.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
  Building solution configuration "Debug|Any CPU".
Project "[โ€ฆ]/eto-test/eto-test.sln" (1) is building "[โ€ฆ]/eto-test/eto-test/eto-test.fsproj" (2) on node 1 (default targets).
PrepareForBuild:
  Creating directory "bin/Debug/net45/".
  Creating directory "obj/Debug/net45/".
/usr/share/dotnet/sdk/2.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(323,5): error : Assets file '[โ€ฆ]/eto-test/eto-test/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [[โ€ฆ]/eto-test/eto-test/eto-test.fsproj]
  Build continuing because "ContinueOnError" on the task "ReportAssetsLogMessages" is set to "ErrorAndContinue".
/usr/share/dotnet/sdk/2.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(165,5): error : Assets file '[โ€ฆ]/eto-test/eto-test/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [[โ€ฆ]/eto-test/eto-test/eto-test.fsproj]
Done Building Project "[โ€ฆ]/eto-test/eto-test/eto-test.fsproj" (default targets) -- FAILED.
Project "[โ€ฆ]/eto-test/eto-test.sln" (1) is building "[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj" (3) on node 1 (default targets).
GenerateFSharpTextResources:
  Creating directory "obj/Debug/".
PrepareForBuild:
  Creating directory "bin/Debug/".
Done Building Project "[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj" (default targets) -- FAILED.
Done Building Project "[โ€ฆ]/eto-test/eto-test.sln" (default targets) -- FAILED.

Build FAILED.

"[โ€ฆ]/eto-test/eto-test.sln" (default target) (1) ->
"[โ€ฆ]/eto-test/eto-test/eto-test.fsproj" (default target) (2) ->
(ReportAssetsLogMessages target) -> 
  /usr/share/dotnet/sdk/2.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(323,5): error : Assets file '[โ€ฆ]/eto-test/eto-test/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [[โ€ฆ]/eto-test/eto-test/eto-test.fsproj]


"[โ€ฆ]/eto-test/eto-test.sln" (default target) (1) ->
"[โ€ฆ]/eto-test/eto-test/eto-test.fsproj" (default target) (2) ->
(RunResolvePackageDependencies target) -> 
  /usr/share/dotnet/sdk/2.0.3/Sdks/Microsoft.NET.Sdk/build/Microsoft.PackageDependencyResolution.targets(165,5): error : Assets file '[โ€ฆ]/eto-test/eto-test/obj/project.assets.json' not found. Run a NuGet package restore to generate this file. [[โ€ฆ]/eto-test/eto-test/eto-test.fsproj]

    0 Warning(s)
    2 Error(s)

Time Elapsed 00:00:01.66

์ฒด๊ณ„

ํŽ˜๋„๋ผ 27 x86_64.

dnf repository-packages packages-microsoft-com-prod list installed ๋ฐ˜ํ™˜:

aspnetcore-store-2.0.0.x86_64            2.0.0-1             @packages-microsoft-com-prod
aspnetcore-store-2.0.3.x86_64            2.0.3-1             @packages-microsoft-com-prod
dotnet-host.x86_64                       2.0.6-1             @packages-microsoft-com-prod
dotnet-hostfxr-2.0.3.x86_64              2.0.3-1             @packages-microsoft-com-prod
dotnet-runtime-2.0.3.x86_64              2.0.3-1             @packages-microsoft-com-prod
dotnet-sdk-2.0.3.x86_64                  2.0.3-1             @packages-microsoft-com-prod

dnf repository-packages mono-centos7-stable list installed ๋ฐ˜ํ™˜:

fsharp.noarch              4.1.33-0.xamarin.2.epel7                               @mono-centos7-stable
libgdiplus0.x86_64         4.2-0.xamarin.2.epel7                                  @mono-centos7-stable
libmonosgen-2_0-1.x86_64   5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-core.x86_64           5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-data.x86_64           5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-data-oracle.x86_64    5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-data-sqlite.x86_64    5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-devel.x86_64          5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-extras.x86_64         5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-mvc.x86_64            5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-wcf.x86_64            5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-web.x86_64            5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-winforms.x86_64       5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
mono-winfxcore.x86_64      5.10.1.20-0.xamarin.3.epel7                            @mono-centos7-stable
msbuild.noarch             1:15.4+xamarinxplat.2017.11.27.11.23-0.xamarin.1.epel7 @mono-centos7-stable
msbuild-libhostfxr.x86_64  2.0.0.2017.07.06.00.01-0.xamarin.1.epel7               @mono-centos7-stable
msbuild-sdkresolver.noarch 1:15.4+xamarinxplat.2017.11.27.11.23-0.xamarin.1.epel7 @mono-centos7-stable
nuget.noarch               2.12+mono-0.xamarin.3.epel7                            @mono-centos7-stable

์˜ค๋ฅ˜๋Š” ์ด๋ฏธ ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค... "NuGet ํŒจํ‚ค์ง€ ๋ณต์›์„ ์‹คํ–‰ํ•˜์—ฌ ์ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์‹ญ์‹œ์˜ค.", ์•„๋‹ˆ์š”, ์ด๊ฒƒ์€ run nuget restore , ํ•ด๋‹น ๋ช…๋ น์ด ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์‰ฌ์šด ํ•ด๊ฒฐ์ฑ…์€ dotnet restore ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Package Restore ์— ๋Œ€ํ•œ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด nuget restore ์— ์˜ํ•ด์„œ๋„ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์–ด์จŒ๋“  dotnet restore ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋ถ€๋ถ„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj(57,3): error MSB4020: The value "" of the "Project" attribute in element <Import> is invalid.
[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj : warning NU1503: Skipping restore for project '[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj'. The project file may be invalid or missing targets required for restore. [[โ€ฆ]/eto-test/eto-test.sln]
[โ€ฆ]

msbuild ์‹คํ–‰ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

/usr/lib/mono/fsharp/Microsoft.FSharp.Targets(181,9): error MSB4062: The "FSharpEmbedResXSource" task could not be loaded from the assembly /usr/lib/mono/fsharp/FSharp.Build.dll.  Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj]
Done Building Project "[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj" (default targets) -- FAILED.
Done Building Project "[โ€ฆ]/eto-test/eto-test.sln" (default targets) -- FAILED.

Build FAILED.

"[โ€ฆ]/eto-test/eto-test.sln" (default target) (1) ->
"[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj" (default target) (3) ->
(GenerateFSharpTextResources target) -> 
  /usr/lib/mono/fsharp/Microsoft.FSharp.Targets(181,9): error MSB4062: The "FSharpEmbedResXSource" task could not be loaded from the assembly /usr/lib/mono/fsharp/FSharp.Build.dll.  Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [[โ€ฆ]/eto-test/eto-test.Desktop/eto-test.Desktop.fsproj]

    0 Warning(s)
    1 Error(s)

ํŒจํ‚ค์ง€ ๋ณต์›์— ๋Œ€ํ•œ ๋ฌธ์„œ์— ๋”ฐ๋ฅด๋ฉด nuget ๋ณต์›์— ์˜ํ•ด์„œ๋„ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

nuget restore ๋Š” ๋ณต์› ๋””๋ ‰ํ† ๋ฆฌ์™€ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์ด ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•œ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์ด ์ œ๊ฐ€ ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค ์—†์ด๋Š” ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์šฐ์—ฐํžˆ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ํ•œ).

์ œ ๊ฒฝ์šฐ์—๋Š” $(FSharpTargetsPath) ๊ฐ€ ๋น„์–ด ์žˆ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. .fsproj ํŒŒ์ผ๊ณผ ๊ฐ™์ด ์ด ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•  ๋•Œ Visual Studio๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋†€๋ผ์šด ์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.

<Choose>
  <When Condition="'$(VisualStudioVersion)' == '11.0'">
    <PropertyGroup Condition=" '$(FSharpTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets') ">
      <FSharpTargetsPath>$(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets</FSharpTargetsPath>
    </PropertyGroup>
  </When>
  <Otherwise>
    <PropertyGroup Condition=" '$(FSharpTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets') ">
      <FSharpTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets</FSharpTargetsPath>
    </PropertyGroup>
  </Otherwise>
</Choose>

์˜ˆ, dotnet ์ฝ”์–ด ๋ฐ ๋ชจ๋…ธ๊ฐ€ ์žˆ๋Š” ๊นจ๋—ํ•œ VM์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜์—ฌ ์ด๊ฒƒ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ์‹ค์ œ๋กœ ํ•„์š”ํ•œ ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๋กœ ์ข‹์€ ์•„์ด๋””์–ด์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@cra0zy dotnet restore ๋Š” F# ํ…œํ”Œ๋ฆฟ์— ํ•„์š”ํ•œ packages.config๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ nuget์˜ ํ…œํ”Œ๋ฆฟ์ด 2.4.1๋กœ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์•˜์œผ๋ฉฐ(2.4.0์— ์žˆ์Œ) F# ๋„๊ตฌ๊ฐ€ ์ด์ œ ์ด๋ฅผ ์ œ๋Œ€๋กœ ์ง€์›ํ•˜๋ฏ€๋กœ packages.config ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

#1104๋กœ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์‹ ๊ณ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

canton7 picture canton7  ยท  22์ฝ”๋ฉ˜ํŠธ

jzlhll picture jzlhll  ยท  14์ฝ”๋ฉ˜ํŠธ

Krakean picture Krakean  ยท  6์ฝ”๋ฉ˜ํŠธ

Jojatekok picture Jojatekok  ยท  33์ฝ”๋ฉ˜ํŠธ

TomQv picture TomQv  ยท  6์ฝ”๋ฉ˜ํŠธ