Error publishing 9.0 Extension using VS 2017

Error publishing 9.0 Extension using VS 2017

  

I'm trying to publish an Extension using Integration Studio v9.0 and Visual Studio 2017. And it shows me this error: 

NET Compilation.

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3245: Não foi possível resolver esta diferença. Não foi possível localizar o assembly "OutSystems.HubEdition.RuntimePlatform". Verifique se ele está no disco. Se ela for exigida pelo seu código, poderão ocorrer erros de compilação.
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(2318,5): error MSB3091: A tarefa falhou porque "resgen.exe" não foi encontrado ou o SDK do Microsoft Windows correto não está instalado. A tarefa está procurando por "resgen.exe" no subdiret¢rio "bin" sob o local especificado no valor InstallationFolder da chave do Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx35Tools-x86. Você poder  resolver o problema executando um destes procedimentos: 1) Instalar o SDK do Microsoft Windows. 2) Instalar o Visual Studio 2010. 3) Definir manualmente a chave do Registro acima para o local correto. 4) Passar o local correto para o parâmetro "ToolPath" da tarefa.


I also tried to publish using Visual Studio 2015 and it was successful.

Does anyone know, if v9.0 works with VS 2017 or have another hint for me to solve this?


Thanks in advance,

Guilherme.

Hi Guilherme,

It seems that OutSystems added support for VS2017 only in P10.

Did you try all four options given in the error stated above to see if you were able to overcome the problem?

  • 1) Instalar o SDK do Microsoft Windows. --> Would probably not work.
  • 2) Instalar o Visual Studio 2010. --> This worked for you with VS2015.
  • 3) Definir manualmente a chave do Registro acima para o local correto. --> Can you check if you can override this key? 
  • 4) Passar o local correto para o parâmetro "ToolPath" da tarefa. --> Can you check if this can be set in the settings window of Integration Studio?

Kind regards,

Remco Dekkinga

Hi Remco,


I tried many things in the past days, including those steps in the error.

I found out that are just some specific extensions we can't compile.

I will open a support ticket for outsystems to help me, because I'm not figuring out what's wrong.


Thanks for the reply.

Hi Guilherme,

Keep us posted on the answer you get from OutSystems. This answer might help others in the future. 

Kind regards,

Remco

Solution

Hi,

I did a quick test and while there is no problem with Visual Studio itself, there is one incompatibility with the ".Net Compiler Tool" that ships with VS2017.


Installing the Build Tools 2015 from the microsoft site and setting the Integration Studio preferences to point to the msbuild installed by it should fix your problem (I can't test because i got both VS2015 and VS2017 in my machine).


In the Integration Studio preferences the IDE setting (first box in the .Net tab) should be set to something like 

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe


Note: the above path depends on Visual Studio version (mine is Professional) and where you installed it.


The ".Net Compilation Tool" (second box in the preferences should be set to something like:

C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe

Note: also confirm if this path exist. It should have beed installed by the Build Tools i linked above.


Regards,

João Rosado

Solution

Thanks for the help João!

I followed your steps and was able to publish my extensions.

I had to do 2 things:

  • In .NET Compiler Tool Options, put: /nologo /verbosity:minimal /target:Rebuild /property:Configuration=Release;GenerateSerializationAssemblies=Off (added 'GenerateSerializationAssemblies' property)
  • Install Build Tools 2015 and then change the path in .NET Compiler Tool (Integration Studio) to: C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe

I'm marking your answer as a solution, but like I said, these 2 steps above were necessary.


Guilherme

Interesting.

The GenerateSerializationAssemblies was to prevent that sdk error? Or Something else?

resgen.exe is usually only necessary if your extensions have text resources (.resx files). Will everything work if you turn that part off?


Regards,
João Rosado