Azure函数:C#使用System.Linq.Expressions编译错误

Azure函数:C#使用System.Linq.Expressions编译错误,azure,azure-functions,linq-expressions,Azure,Azure Functions,Linq Expressions,我有一个Azure函数,负责连接到Azure广告并检索一些Azure广告信息 当我在.Users上使用.Expand()属性时,我收到以下编译错误: activeDirectoryClient.Users.Expand(x => x.MemberOf).ExecuteAsync().Result; (38,17): error CS0012: The type 'Expression<>' is defined in an assembly that is no

我有一个Azure函数,负责连接到Azure广告并检索一些Azure广告信息

当我在
.Users
上使用
.Expand()
属性时,我收到以下编译错误:

   activeDirectoryClient.Users.Expand(x => x.MemberOf).ExecuteAsync().Result;

    (38,17): error CS0012: The type 'Expression<>' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Linq.Expressions

使用C#的Azure函数解决方案中的
Linq.Expressions是否存在已知问题?

Azure函数中的Linq.Expressions没有问题

使用Linq.Expression的HttpTriggerCSSharp工作示例:

project.json

{
"frameworks": {
"net46":{
  "dependencies": {
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.5",
    "Microsoft.Azure.ActiveDirectory.GraphClient": "2.1.0"
   }
  }
 }
}
run.csx

#r "System.Linq.Expressions"

using System.Net;
using Microsoft.Azure.ActiveDirectory.GraphClient;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + "testdomain"),
                                                                                async () => await AcquireTokenAsyncForApplication());
    IUser user = activeDirectoryClient.Users.Where(u => u.UserPrincipalName == "admin@testdomain.onmicrosoft.com").ExecuteSingleAsync().Result;

    return req.CreateResponse(HttpStatusCode.OK, "Hello");

}

public static async Task<string> AcquireTokenAsyncForApplication()
{
    return "test";
}
#r“System.Linq.Expressions”
Net系统;
使用Microsoft.Azure.ActiveDirectory.GraphClient;
使用Microsoft.IdentityModel.Clients.ActiveDirectory;
公共静态异步任务运行(HttpRequestMessage请求、TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
ActiveDirectoryClient ActiveDirectoryClient=新的ActiveDirectoryClient(新Uri(“https://graph.windows.net/“+”测试域“),
async()=>等待AcquireTokenAsyncForApplication());
IUser user=activeDirectoryClient.Users.Where(u=>u.UserPrincipalName==)admin@testdomain.onmicrosoft.comExecuteSingleAsync().Result;
返回req.CreateResponse(HttpStatusCode.OK,“Hello”);
}
公共静态异步任务AcquireTokenAsyncForApplication()
{
返回“测试”;
}

Azure函数中的Linq.表达式没有问题

使用Linq.Expression的HttpTriggerCSSharp工作示例:

project.json

{
"frameworks": {
"net46":{
  "dependencies": {
    "Microsoft.IdentityModel.Clients.ActiveDirectory": "3.13.5",
    "Microsoft.Azure.ActiveDirectory.GraphClient": "2.1.0"
   }
  }
 }
}
run.csx

#r "System.Linq.Expressions"

using System.Net;
using Microsoft.Azure.ActiveDirectory.GraphClient;
using Microsoft.IdentityModel.Clients.ActiveDirectory;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

    ActiveDirectoryClient activeDirectoryClient = new ActiveDirectoryClient(new Uri("https://graph.windows.net/" + "testdomain"),
                                                                                async () => await AcquireTokenAsyncForApplication());
    IUser user = activeDirectoryClient.Users.Where(u => u.UserPrincipalName == "admin@testdomain.onmicrosoft.com").ExecuteSingleAsync().Result;

    return req.CreateResponse(HttpStatusCode.OK, "Hello");

}

public static async Task<string> AcquireTokenAsyncForApplication()
{
    return "test";
}
#r“System.Linq.Expressions”
Net系统;
使用Microsoft.Azure.ActiveDirectory.GraphClient;
使用Microsoft.IdentityModel.Clients.ActiveDirectory;
公共静态异步任务运行(HttpRequestMessage请求、TraceWriter日志)
{
Info(“C#HTTP触发器函数处理了一个请求。”);
ActiveDirectoryClient ActiveDirectoryClient=新的ActiveDirectoryClient(新Uri(“https://graph.windows.net/“+”测试域“),
async()=>等待AcquireTokenAsyncForApplication());
IUser user=activeDirectoryClient.Users.Where(u=>u.UserPrincipalName==)admin@testdomain.onmicrosoft.comExecuteSingleAsync().Result;
返回req.CreateResponse(HttpStatusCode.OK,“Hello”);
}
公共静态异步任务AcquireTokenAsyncForApplication()
{
返回“测试”;
}

嗨,阿列克西,谢谢你的快速回复。我有相同的using子句和相同的project.son条目。var-activeDirectoryClient=new-activeDirectoryClient(新Uri(“+aadtenatname”),async()=>{return-await-GetAccessToken(aadtenatname,clientID,clientSecret);});var users=activeDirectoryClient.users.Expand(x=>x.MemberOf).ExecuteAsync().Result//这给了我一个编译错误//var users=activeDirectoryClient.users.ExecuteAsync().Result;编译正确。嗨,Jens。我编辑了我的答案。尝试从project.json中删除“System.Linq.*”依赖项,并在run.csx中添加#r“System.Linq.Expressions”。这段代码对我来说编译没有错误。事实上,这是正确的。谢谢你帮我解决这个问题。但是,我不明白我最初的想法有什么问题:-)#r用于外部asseblies包。json用于nuget包嗨,Alexey,感谢您的快速响应。我有相同的using子句和相同的project.son条目。var-activeDirectoryClient=new-activeDirectoryClient(新Uri(“+aadtenatname”),async()=>{return-await-GetAccessToken(aadtenatname,clientID,clientSecret);});var users=activeDirectoryClient.users.Expand(x=>x.MemberOf).ExecuteAsync().Result//这给了我一个编译错误//var users=activeDirectoryClient.users.ExecuteAsync().Result;编译正确。嗨,Jens。我编辑了我的答案。尝试从project.json中删除“System.Linq.*”依赖项,并在run.csx中添加#r“System.Linq.Expressions”。这段代码对我来说编译没有错误。事实上,这是正确的。谢谢你帮我解决这个问题。但是,我不明白我最初的想法有什么问题:-)#r用于外部assblies包。json用于nuget包