我已经使用Visual Studio 2017和默认设置创建了三个.NET Standard类库C#项目。
项目:
它们每个都必须具有自己的输出目录,例如:
<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):
如果将属性更改Copy Local为false,则直接引用的项目中的DLL消失。那就更好了,但是嵌套引用的DLL仍然保留-> ClockProject中的MainProject.dll。
输出目录(Copy Local = false):
我要防止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) 我想获取临时文件夹的路径(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) 我正在使用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) 我在我的方法中得到一个字节列表.现在我需要字节列表反转和非反转.我试过这个:
public void Test(List<Byte> dataList)
{
List<byte> reversedDataList = dataList;
reversedDataList.Reverse();
_polls = dataList[0];
_rpolls = reversedDataList[0]
}
Run Code Online (Sandbox Code Playgroud)
问题是,两个列表都是相反的.我怎么解决这个问题?
这是我的枚举:
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子句不起作用,我怎么能这样做?
我有一个包含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
我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) 我有一个包含这样的字符串的列表:
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包含:
"七"和"明智"
最高性能的解决方案如何?
我以这种方式打开一个文件,工作正常:
var openFileDialog = new OpenFileDialog;
if (openFileDialog.ShowDialog().GetValueOrDefault())
{
Browser.FileDoc = File.ReadAllText(openFileDialog.FileName);
}
Run Code Online (Sandbox Code Playgroud)
现在,我想获取路径并将其传递给另一个类.我怎样才能做到这一点?