使用.NET 4.5构建Windows服务

时间:2014-03-19 17:13:40

标签: c# .net msbuild windows-services

我有一个应用程序,我最近不得不升级到.NET 4.5以利用异步以及其他一些东西。它在我的本地开发环境中运行良好。当我把它放在服务器上时(我刚刚安装了.NET 4.5),当它到达异步部分时,它会出错,抛出 System.MissingMethodException

  

在System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__1(System.Object)      在System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(System.Object)      在System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)      在System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,System.Threading.ContextCallback,System.Object,Boolean)      在System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()      在System.Threading.ThreadPoolWorkQueue.Dispatch()      在System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

当我进入事件查看器时,它清楚地说我的Windows服务是框架版本:v4.0.30319。我的问题是如何将其构建为4.5?在Visual Studio中,我的目标是4.5,它再次在本地工作。我使用TeamCity,特别是MSBuild来构建解决方案。在我的构建配置文件中,它使用它作为构建路径:

<property name="msbuild.path" value="C:/Windows/Microsoft.NET/Framework/v4.0.30319/MSBuild.exe" />

据我所知,没有4.5 msBuild。如何在服务器上将此服务设为4.5?

1 个答案:

答案 0 :(得分:2)

我会获得有关异常的更多信息。 MissingMemberException有许多属性可以让您更好地了解它实际上是缺少的dot net框架。也只是因为.net框架版本被列为v4.0.30319并不意味着它不是4.5因为4.5是建立在4之上所以你不能100%肯定,直到你查看你的异常属性