Ani*_*ish 3 .net c# msbuild il visual-studio
当只从MSBuild 4.0进行发布构建时,我收到"指定的强制转换无效"有效.我在使用Visual Studio 2012的发布版本时对此进行了测试,但没有遇到此问题.我还使用MSBuild 4.0的调试版本对此进行了测试,但没有遇到此问题.
例外: 
码
public abstract class CachedSessionBase : ISessionObject
{
protected Dictionary<MethodBase, Object> _getAndSetCache = new Dictionary<MethodBase, object>();
protected TResult SetAndGet<TResult>(ObjectFactory factory, Func<TResult> func)
{
StackTrace stackTrace = new StackTrace();
var methodBase = stackTrace.GetFrame(1).GetMethod();
if (!_getAndSetCache.ContainsKey(methodBase))
{
_getAndSetCache[methodBase] = func.Invoke();
}
return (TResult)_getAndSetCache[methodBase];
}
Run Code Online (Sandbox Code Playgroud)
错误正在这条线上抛出
return (TResult)_getAndSetCache[methodBase];
Run Code Online (Sandbox Code Playgroud)
调用堆栈可能与您期望的不同.您的方法可能会被内联,然后GetFrame(1)检索调用者的调用者.从字典中检索值时,它的类型不同,因为它适用于不同的方法.
您可以尝试添加该属性[MethodImpl(MethodImplOptions.NoInlining]以SetAndGet防止该方法的内联优化.
运行nuget pack调用时我遇到了同样的问题
MSBuild自动检测:使用msbuild版本'15 .0'...
但问题是通过运行dotnet pack调用解决的
用于.NET Core的Microsoft(R)Build Engine版本15.3.409.57025