小编cdi*_*die的帖子

使用Xamarin在同一设备iOS/Android上的2个应用程序之间进行通信

我们目前正在为我们的主应用程序开发一个类似"附加"应用程序的应用程序,以扩展其可能性.

我们问自己在同一设备上是否有简单的应用间通信(互联网上没有找到这个...).我们的第一个想法是在我们的附加应用程序上创建一个服务器套接字,并将数据从主应用程序发送到它.

这是服务器的C#代码:

    public async Task Start()
    {
        Listener = new TcpListener(IPAddress.Parse(GetIP()), 7777);
        var client = Listener.AcceptTcpClient();
        while (true)
        {
            while (!client.GetStream().DataAvailable) ;
            using (NetworkStream stream = client.GetStream())
            {
                byte[] data = new byte[client.Available];
                stream.Read(data, 0, client.Available);
                if (data.Length > 0)
                {
                    String s = Encoding.UTF8.GetString(data);
                    if (!string.IsNullOrWhiteSpace(s))
                        OnMessageRecevied?.Invoke(s);

                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

对于客户:

    public async Task SendMessage(string msg)
    {
        tClient = new TcpClient();
        var buffer = Encoding.UTF8.GetBytes(msg);
        while (!tClient.Connected)
        {
            tClient.Connect(IPAddress.Parse(Server.GetIP()), 7777);
            Thread.Sleep(100);
        }
        await tClient.GetStream().WriteAsync(buffer, 0, buffer.Length);
        tClient.Close(); …
Run Code Online (Sandbox Code Playgroud)

c# android xamarin.ios ios xamarin

12
推荐指数
1
解决办法
2184
查看次数

有没有办法从 Azure DevOps YAML 读取文件?

在使用 YAML 文件格式在 Azure DevOps 上执行 CI 时,我试图读取我的 csproj 文件以提取有关版本的信息以创建将遵循 csproj 版本的 NuGet 包。

NuGetCommand@2用于包装(因为versioningScheme: byPrereleaseNumber

是否有内置任务或方法可以从 csproj 文件中提取此信息作为正则表达式并将它们传递给NuGetCommand@2

yaml csproj azure-devops

10
推荐指数
3
解决办法
5670
查看次数

ASP MVC Core RC1将控制器,视图和模型放在运行时加载的其他程序集中

我们目前正在开发一个动态系统,需要在运行时加载一些扩展.

扩展构建在与MVC app相同的体系结构上,MVC app表示控制器文件夹,其中的类以Controller结尾,相关的View和ViewComponents位于/ View/ControllerName中,以及相关的模型.

无法将此项目添加为项目的引用,因此我创建了一个在运行时加载它们的中间件:

foreach (var item in extensions)
{
   Assembly.LoadFrom($@"extensions\{item.Name}.dll");
}
Run Code Online (Sandbox Code Playgroud)

到目前为止很好,它们在运行时加载.但是,当我尝试访问在扩展程序控制器之一中创建的路由时,WebSite会给出404响应.

我尝试添加扩展作为参考,它运行良好,所以这不是我的扩展中的问题.

如何设置将我的dll控制器注册到MVC主站点?

这不是ASP MVC 4,这是ASP Core,因此看来这个答案无效:asp.net mvc把控制器放到一个单独的项目中

虽然依赖注入可能是一个解决方案,但我没有找到任何解决方案来为自己制作我的扩展注册服务(并且它对于扩展创建者来说很复杂).

我的扩展路由定义为Controller端:

[Route("[controller]/[action]")]
public class LotteryController : Controller { ... }
Run Code Online (Sandbox Code Playgroud)

在我的Startup.cs上,我实际上保留了默认路由:

 app.UseMvc(routes =>
        {
            routes.MapRoute(
                name: "default",
                template: "{controller=Home}/{action=Index}/{id?}");
        });
Run Code Online (Sandbox Code Playgroud)

事实是,我希望我的扩展程序启用路由:http:// localhost/Lottery/Index

它给了我一个空白页面.出于测试目的,我当前的Index操作是

 // GET Index
 public IActionResult Index()
{
   return Content("From extension");
   //return View();
}
Run Code Online (Sandbox Code Playgroud)

这是我的扩展项目层次结构

在此输入图像描述

c# asp.net-core-mvc asp.net-core

9
推荐指数
1
解决办法
1304
查看次数

将数组作为输入传递给 Azure DevOps YAML 任务

我正在尝试配置一个 CI,它将生成 NuGet 包作为 Azure DevOps 上的工件(稍后将推送到我的 NuGet 服务器)。

为此,我在 Azure DevOps(YAML 版本)上使用了 Builds Pipelines。

我有 3 个应该构建包的项目。我正在使用NuGetCommand@2来完成这个任务:

- task: NuGetCommand@2
  inputs:
    command: pack
    packagesToPack: $(Build.SourcesDirectory)/src/HTS_MessageEngine.Communication/HTS_MessageEngine.Communication.csproj
    majorVersion: $(majorVersion)
    minorVersion: $(minorVersion)
    patchVersion: $(patchVersion)
    versioningScheme: byPrereleaseNumber
Run Code Online (Sandbox Code Playgroud)

但是,对于每个项目,我必须将这个块复制 3 次。有没有办法在 packagesToPack 参数中指定项目数组?到目前为止,每个包的版本都相同,所以我不需要三个不同的块......

注意:这3个项目都是3个NetStandard,包构建的属性直接存储在csproj中

continuous-integration yaml nuget-package azure-devops

8
推荐指数
2
解决办法
1万
查看次数

Blazor:System.InvalidOperationException:“RemoteNavigationManager”尚未初始化

我在 ASP.NET Core MVC 3.1 网站上使用 Blazor 服务器来处理某些需要 Blazor 功能的组件。一切正常,但是,我无法从 Blazor 组件导航到 ASP.NET MVC 路由。

为了导航,我设置了以下属性:

[Inject]
public NavigationManager NavigationManager { get; set; }
Run Code Online (Sandbox Code Playgroud)

当我打电话时NavigationManager.NavigateTo("/games/details/" + gameId, true),出现以下错误:

错误:System.InvalidOperationException:“RemoteNavigationManager”尚未初始化。在 Microsoft.AspNetCore.Components.NavigationManager.AssertInitialized() 在 Microsoft.AspNetCore.Components.NavigationManager.NavigateTo(String uri, Boolean forceLoad) 在 MyWebSite.Web.Pages.Search.SearchBar.GoToGamePage(Int32 gameId) 在 D:\repos \MyWebSite\src\MyWebSite.Web\Pages\Search\SearchBar.razor.cs: 第 58 行位于 D:\repos\MyWebSite\src\MyWebSite 中的 MyWebSite.Web.Pages.Search.SearchBar.<>c__DisplayClass47_0.b__5() .Web\Pages\Search\SearchBar.razor:第 22 行,位于 Microsoft.AspNetCore.Components.EventCallbackWorkItem.InvokeAsync[T](MulticastDelegate 委托,T arg),位于 Microsoft.AspNetCore.Components.ComponentBase.Microsoft.AspNetCore.Components.IHandleEvent。 Microsoft.AspNetCore.Components.RenderTree.Renderer.DispatchEventAsync(UInt64 eventHandlerId、EventFieldInfo fieldInfo、EventArgs eventArgs)的 HandleEventAsync(EventCallbackWorkItem 回调,对象 arg)

我发现的有关 NavigationManager 的所有内容都适用于 Blazor Web 项目,而不是带有 Blazor 组件的 ASP.NET Core MVC。

c# asp.net asp.net-mvc asp.net-core blazor-server-side

6
推荐指数
1
解决办法
5717
查看次数

如何在资源字典中绑定datatemplate

我正在尝试将我的元素绑定在字典中定义的datatemplate中.让我们简单一点.

我有一个简单的课程

public class A { public string Data {get;set} }
Run Code Online (Sandbox Code Playgroud)

我有一个包含ListBox的简单视图,ItemSources是A类的列表:

<ListBox ItemsSource="{Binding AList}">
Run Code Online (Sandbox Code Playgroud)

关键是,当我直接在视图中定义Itemplate时,绑定工作:

<ListBox.ItemTemplate>
   <DataTemplate >
      <TextBlock Text="{Binding Data}" />
      <Rectangle Fill="Red" Height="10" Width="10"/>
   </DataTemplate>
 </ListBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

这非常有效.

但是当我在资源字典中定义这个ItemTemplate时,绑定不起作用?

我怎样才能做到这一点 ?

PS:这是一个简单的例子来解释我的问题,不要告诉我重写toString函数使其工作或使用classe模板,我的实际案例比这更复杂.

感谢帮助

c# wpf styles

5
推荐指数
1
解决办法
1万
查看次数

EF Core fluent映射到内部对象属性

我有一个包含一些属性的类.出于某些架构原因,我在我的班级中有另一个对象的实例.

简单的例子

public class MyEntity {
   public MySubEntity SubEntity {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

为此,我创建了流畅的映射,如:

builder.ToTable(MyEntity.CONST_TABLE_NAME);
builder.HasKey(m => m.Id);
builder.Property(m => m.Column1).IsRequired();
builder.Property(m => m.SubEntity.Column2).IsRequired();
Run Code Online (Sandbox Code Playgroud)

我无法将所有subEntity属性集成到我的主实体中(我的subEntity有自己的智能).我只想将我的子实体属性(不存储在单独的表中)映射到myEntity表.

最后一行抛出异常:

The expression 'm => m.SubEntity.Column2' is not a valid property expression. The expression should represent a property access: 't => t.MyProperty'.
Run Code Online (Sandbox Code Playgroud)

我该如何进行这种映射?

c# fluent-entity-framework entity-framework-core

5
推荐指数
1
解决办法
1838
查看次数

如何将命令绑定到DataTemplate中的ContextMenu

我有点迷失绑定.我在最后一小时尝试了很多东西,我无法列举所有这些东西.我在DataTemplate中遇到了contextMenu的问题.

解释:我有一个UserControl.它的dataContext本身就是.在这里UserControl,我有一个ItemsControl来表示超链接列表.我ItemsControl itemsSource受约束(它由对象元素组成).我重新定义了ItemsControl.ItemTemplate.在里面,我创建了一个HyperLink,TextBlock作为孩子使其工作,并在此TextBlock,我ContextMenu通过执行以下操作设置.

<TextBlock.ContextMenu>
  <ContextMenu DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
    <MenuItem Header="Enregistrer la pièce jointe" Foreground="Black">
      <MenuItem Header="Dans le dossier patient" Command="{Binding DataContext.SaveAttachmentIntPatientFolderCommand, RelativeSource={RelativeSource AncestorType=UserControl}}" CommandParameter="{Binding FilePath}" Foreground="Black" />
      <MenuItem Header="Enregistrer sous ..." Command="{Binding DataContext.SaveAttachmentAsCommand}" CommandParameter="{Binding FilePath}" Foreground="Black" />
    </MenuItem>
  </ContextMenu>
</TextBlock.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

所以我有

UserControl --> ItemsControl --> ItemTemplate --> HyperLink --> TextBlock --> ContextMenu --> ContextMenuItem
Run Code Online (Sandbox Code Playgroud)

我知道我的第一个相对来源不起作用,我有一个绑定错误.我想要的是绑定我的UserContorl datacontext,它具有这些命令.

我该怎么办?

谢谢

c# wpf binding

3
推荐指数
1
解决办法
1339
查看次数

IdentityServer4和用户管理

我一直在网上粉碎,发现了一些关于IdentityServer4及其真正用途的数据.

对于我到目前为止所理解的,IdentityServer4是令牌发行者,它是系统,它将保持特定客户端可以访问的资源与之间的链接.因此,IdentityServer将获得客户端标识,以确定是否,是或否,它有权访问此资源,或者它将获得用户标识(也称为邮件和密码)以获取令牌以说明用户是否已注册.

如果我没有误会,这意味着用户存储必须靠近IdentityServer,或者IdentityServer应该知道在用户存储中进行的每个修改.关于身份服务器的最新版本,我没有找到一些有价值的东西.而且,IdentityServer似乎需要AspNet Identity,这意味着信息将被复制......

有什么我不明白或出错的吗?如果没有,它是如何轻松实现的(考虑到我从头开始,我必须迁移旧的旧用户存储)?

asp.net-identity asp.net-core identityserver4

3
推荐指数
1
解决办法
3675
查看次数

如何在 WPF 中绑定和刷新 UserControl 绑定?

我正在尝试为用户控件做一个简单的 OneWay 绑定,但老实说我不明白为什么有些部分不起作用。为简单起见,我创建了一个 WPF 标准 UserControl,其中包含一些依赖项属性。在我的主窗口中,我根据某些事件隐藏/显示 UserControl,并将属性绑定到我的主窗口视图模型数据。但是,这样做不会使我的 UserControl 刷新某些部分。例如,我的 UserControl 上有一个 SearchString 依赖项属性:

public static readonly DependencyProperty SearchStringProperty = DependencyProperty.Register("SearchString",
           typeof(string), typeof(DisplayMailView), new UIPropertyMetadata(null));

public string SearchString
    {
        get { return (string)GetValue(SearchStringProperty); }
        set
        {
            SetValue(SearchStringProperty, value);
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs("SearchString"));
            }
            var loFinds = richEditControl1.Document.FindAll(SearchString, SearchOptions.WholeWord);

            foreach (var find in loFinds)
            {
                var oDoc = find.BeginUpdateDocument();
                var oChars = oDoc.BeginUpdateCharacters(find);
                oChars.BackColor = System.Drawing.Color.Yellow;
                oDoc.EndUpdateCharacters(oChars);
                find.EndUpdateDocument(oDoc);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

UserControl 中的这个绑定到我的主窗口视图模型的 SearchString 成员

<local:DisplayMailView SearchString="{Binding DataContext.SearchString, …
Run Code Online (Sandbox Code Playgroud)

c# data-binding wpf user-controls mvvm

1
推荐指数
1
解决办法
2185
查看次数