cscore icon indicating copy to clipboard operation
cscore copied to clipboard

Build failed when updating .NET to 4.7.2

Open e4rthdog opened this issue 4 years ago • 1 comments

I retargeted to 4.7.2 in order to be more recent and use CSCORE in a .NET Core 3.1 application that i am building.

I cant compile cause the post-build event returns -1:

On a Windows 10 2004 machine.

`@echo off & setLocal EnableDELAYedeXpansion chcp 65001

  set errorCode=0

  set target=$(TargetPath)
  set project=$(ProjectPath)

  set sdk=%PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools
  set framework=%WINDIR%\Microsoft.NET\Framework\v2.0.50727
  set inlineILCompiler=$(SolutionDir)Tools\InlineILCompiler\InlineILCompiler\bin\$(ConfigurationName)\InlineILCompiler.exe
  set cscli=$(SolutionDir)Tools\CSCli\bin\$(ConfigurationName)\CSCli.exe

  IF exist "%sdk%\." (
  echo OK: The Microsoft Windows SDK was found.
  ) else (
  echo FAILED: The Microsoft Windows SDK Dir was not found. Check the following path: "%sdk%"
  goto EXIT_ERR
  )
  IF exist "%framework%\." (
  echo OK: The .NET Framework Dir was found.
  ) else (
  echo FAILED: The Framework-Dir was not found. Check the following path: "%framework%"
  goto EXIT_ERR
  )
  IF exist "%inlineILCompiler%" (
  echo OK: Found the inline-il-compiler.
  ) else (
  echo FAILED: The inline-il-compiler was not found. Check the following path: "%inlineILCompiler%"
  goto EXIT_ERR
  )
  IF exist "%cscli%" (
  echo OK: Found the cscli-compiler.
  ) else (
  echo FAILED: The cscli was not found. Check the following path: "%cscli%"
  goto EXIT_ERR
  )

  if $(ConfigurationName) == Debug (
  echo Build-Configuration: DEBUG
  echo    DEBUG=IMPL
  echo    NO OPTIMIZE
  set ilasm_args=/DLL /DEBUG=IMPL
  ) else (
  if $(ConfigurationName) == Release (
  echo Build-Configuration: RELEASE
  echo    NO DEBUG
  echo    OPTIMIZE
  set ilasm_args=/DLL /OPTIMIZE
  ) else (
  echo FAILED: Invalid Configuration.
  goto EXIT_ERR
  )
  )

  echo.
  echo.
  echo Calling the inline-il-compiler ...
  call "%inlineILCompiler%"

  echo.
  echo.
  echo Calling CSCli ...
  call "%cscli%" -file:"$(TargetPath)" -r:"RemoveObjAttribute" -c:"CSCalliAttribute"

  :EXIT
  EXIT /B %errorCode%

  :EXIT_ERR
  set errorCode=-1
  goto EXIT

`

e4rthdog avatar Jun 06 '20 04:06 e4rthdog

This batch script ist part of the post build event in the project file. You have to edit it and correct the pathes for sdk etc.

e.g The Windows 10 netfx sdk folder would be: set sdk=%PROGRAMFILES(x86)%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools

Furthermore you can change the inlineILCompiler and cscli path by using $(ProjectDir) instead of SolutionDir, and $(OutDir) instead of the bin$(ConfigurationName), because netCore3.1 has another output directory e.g.: set inlineILCompiler=$(ProjectDir)..\Tools\InlineILCompiler$(OutDir)InlineILCompiler.exe set cscli=$(ProjectDir)..\Tools\CSCli$(OutDir)CSCli.exe

This fixes it for me.

priowrea avatar Jul 03 '20 12:07 priowrea