小编Sta*_*mpy的帖子

引用的.NET Standard项目中的多个DLL

我已经使用Visual Studio 2017和默认设置创建了三个.NET Standard类库C#项目。

项目:

  • 主项目
  • 时间项目
    • 依赖关系-> MainProject
  • ClockProject
    • 依赖-> TimeProject

它们每个都必须具有自己的输出目录,例如:

<OutputPath>C:\Projects\DataControl\Build\MainProject</OutputPath>
<OutputPath>C:\Projects\DataControl\Build\TimeProject</OutputPath> 
<OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
Run Code Online (Sandbox Code Playgroud)

项目DLL文件放置在输出目录中,但问题是引用的项目DLL也放置在输出目录中(TimeProject.dll和MainProject.dll)

输出目录(Copy Local = true):

  • \ Build \ MainProject:
    • MainProject.dll
  • \ Build \ TimeProject
    • MainProject.dll
    • TimeProject.dll
  • \ Build \ ClockProject
    • MainProject.dll
    • TimeProject.dll
    • ClockProject.dll

如果将属性更改Copy Local为false,则直接引用的项目中的DLL消失。那就更好了,但是嵌套引用的DLL仍然保留-> ClockProject中的MainProject.dll。

输出目录(Copy Local = false):

  • \ Build \ MainProject:
    • MainProject.dll
  • \ Build \ TimeProject
    • TimeProject.dll
  • \ Build \ ClockProject
    • MainProject.dll
    • ClockProject.dll

我要防止ClockProject在其输出目录中创建MainProject.dll,因为MainProject.dll已存在于MainProject的输出目录中。

我的项目很大,在这种情况下,我的项目文件夹中有很多相同的DLL。但是,在程序启动期间,逻辑还会在子文件夹中搜索DLL,然后找到同一项目的多个DLL,这会导致版本冲突。通常,我想保持这种逻辑,因此我正在寻找一种仅生成项目DLL而不生成引用的DLL的解决方案。

最后,我的csproj文件。其他两个项目文件看起来相似。

ClockProject.csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <OutputPath>C:\Projects\DataControl\Build\ClockProject</OutputPath>
  </PropertyGroup>

  <ItemGroup>
    <ProjectReference …
Run Code Online (Sandbox Code Playgroud)

.net c# build visual-studio .net-standard-2.0

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

GetEnvironmentVariable("TEMP") 不带波形符 (~)

我想获取临时文件夹的路径(C:\Users\user\AppData\Local\Temp)。

GetEnvironmentVariable("TEMP")工作正常,但我得到了带有波形符的路径:

C:\Users\STANHE~1\AppData\Local\Temp\
Run Code Online (Sandbox Code Playgroud)

..我需要没有波浪号的路径:

C:\Users\StanHerrmann\AppData\Local\Temp\
Run Code Online (Sandbox Code Playgroud)

.net c# environment-variables

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

可检查组合框的默认文本

我正在使用Xceed可检查组合框.现在我想显示一个默认文本,具体取决于组合框中选中的复选框,但我不知道该怎么做.

例如:

在此输入图像描述

文本框的内容(红色箭头)应为:

  • 如果未选择任何内容:"请选择"
  • 如果一切都被选中:"所有人"
  • 如果选择了一个或多个:"特定选择"

喜欢:

在此输入图像描述


例如,代码:

XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <xctk:CheckComboBox x:Name="_checkComboBox"
                          Height="22"
                          VerticalAlignment="Stretch"
                          ItemsSource="{Binding Names}"
                          SelectedItemsOverride="{Binding SelectedNames}"
                          DisplayMemberPath="Title"
                          Delimiter=", "
                          Width="100"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

CS:

using System.Windows;

namespace WpfApplication1
{
    using System.Collections.ObjectModel;

    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
            _checkComboBox.DataContext = this;

            Names = new ObservableCollection<People>()
              {
                new People() { Title = "Mikel" },
                new People() { Title = "Tom" },
                new People() { Title = "Jennifer" }, …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml combobox xceed

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

反转和非反转列表

我在我的方法中得到一个字节列表.现在我需要字节列表反转和非反转.我试过这个:

public void Test(List<Byte> dataList)
{
    List<byte> reversedDataList = dataList;
    reversedDataList.Reverse();

    _polls = dataList[0];
    _rpolls = reversedDataList[0]
}
Run Code Online (Sandbox Code Playgroud)

问题是,两个列表都是相反的.我怎么解决这个问题?

.net c# list

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

检查byte是否是enum中的值

这是我的枚举:

internal enum ServiceCode
{
    AAA = 0x54, BBB = 0x24, CCC = 0x45
};
Run Code Online (Sandbox Code Playgroud)

在我的方法中,我想检查,如果字节数在我的枚举中:

Byte tByteItem;

// tByteItem converted to decimal for example: 0x54 -> 84

// now I want to check, if 84 (=0x54) is in my enum
// it should be true, because AAA = 0x54 = 84
if (Enum.IsDefined(typeof(ServiceCode), tByteItem))
{
    // ...          
}
Run Code Online (Sandbox Code Playgroud)

我的if子句不起作用,我怎么能这样做?

.net c# enums if-statement

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

什么意思&0x40和<< 7

我有一个包含10个值(字节,十六进制)的列表.该列表将转换为十进制:

09 04 5A 14 4F 7D

9 4 90 20 79 125

之后.有一个方法(参数:) List<Byte> byteList.任何人都可以在该方法中解释以下代码:

"Test:" + ((((UInt16)byteList[(Int32)index] & 0x40) << 1) >> 7):
Run Code Online (Sandbox Code Playgroud)

特别是& 0x40<< 1>> 7

.net c#

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

如何对ObservableCollection <KeyValuePair <int,string>进行排序

ObservableCollection<KeyValuePair<int, String>>()在文本框上绑定了一个名为TestList的文件,我希望按照它排序int.我尝试了以下但它没有对集合进行排序:

new ObservableCollection<KeyValuePair<int, string>>(
                 TestList .Where(p => p.Key > 0)
                 .GroupBy(p => p.Key)
                 .Select(grp => grp.First())
                 .OrderBy(p => p.Key)
                 );
Run Code Online (Sandbox Code Playgroud)

我该如何对系列进行排序?Binding还能运作吗?

编辑(也不起作用):

public ObservableCollection<KeyValuePair<int, String>> TestList
{
    get { return testList; }
    set {
        testList = value;
        NotifyPropertyChanged("TestList");
    }
}

public void Test(int index)
{
    TestList.RemoveAt(index);
    TestList = new ObservableCollection<KeyValuePair<int, string>>(TestList.OrderBy(p => p.Key));
}
Run Code Online (Sandbox Code Playgroud)

和GUI:

<TextBox Grid.Column="0" IsReadOnly="True"
Text="{Binding Path=Value , Mode=OneWay}" />
Run Code Online (Sandbox Code Playgroud)

.net c# sorting wpf observablecollection

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

比较列表的第一个字母

我有一个包含这样的字符串的列表:

List<String> data = new List<String>
{
    "marine",
    "blue",
    "SEM",
    "seven",
    "sensible",
    "six"
};
Run Code Online (Sandbox Code Playgroud)

现在我想将此列表与字符串进行比较,并将匹配项添加到新列表中:

String input = "se";
List<String> newList = new List<String>;
Run Code Online (Sandbox Code Playgroud)

匹配条件是,第一个字母应该相同(区分大小写).在这种情况下,newList包含:

"七"和"明智"

最高性能的解决方案如何?

.net c# string

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

从openfile对话框获取路径

我以这种方式打开一个文件,工作正常:

var openFileDialog = new OpenFileDialog;

if (openFileDialog.ShowDialog().GetValueOrDefault())
{
    Browser.FileDoc = File.ReadAllText(openFileDialog.FileName);
}
Run Code Online (Sandbox Code Playgroud)

现在,我想获取路径并将其传递给另一个类.我怎样才能做到这一点?

.net c# wpf openfiledialog winforms

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