几周前,我按照本教程开始使用dotnet core + vue.js.
安装模板的步骤如下:
安装Microsoft提供的SPA(单页应用程序)模板:
dotnet new --install Microsoft.AspNetCore.SpaTemplates::*
Run Code Online (Sandbox Code Playgroud)
要开始并创建一个新的Vue项目,只需在控制台上运行以下命令:
mkdir new-project
cd new-project
dotnet new vue
Run Code Online (Sandbox Code Playgroud)
它工作得很好(我再说一遍,那是几周前).
现在我在同一台机器上重复了相同的步骤,它说"没有与输入模板名称相匹配的模板:vue"=>
在过去几周内是否已停止使用vue.js模板?或者我做错了什么?
通过"越来越多"我的意思是,Add当密钥数量较少时,开始时速度很快.插入20%的键后,它变得非常慢.在50%之后它变得无法忍受地缓慢.
我得到的是,键的数量越少,向字典添加新元素时"键碰撞搜索"的速度就越快.但有没有什么方法可以在保持这种情况的同时跳过这个缺点Dictionary?我事先知道密钥不会碰撞所以不需要检查,但我不知道是否有任何方法可以在代码中成功使用此信息.
顺便说一句,由于体系结构的限制,我不得不使用字典结构(这个结构后来被db导出器吞噬).
我的代码做了什么:
var keyList = GetKeyList();
var resultDict = new Dictionary<T,T>();
foreach (var key in keyList)
{
resultDict.Add(key,someResult);
}
Run Code Online (Sandbox Code Playgroud)
编辑:由于人们在询问如何生成哈希码,我将尝试澄清这一点.
从理论上讲,我无法控制哈希码生成,因为不幸的是它使用了通过同一个数据库连接的多个系统之间的约定.
在实践中,生成哈希码的代码片段确实是我的代码(免责声明:我不是选择在代中使用的约定).
密钥生成比这更复杂,但这一切都归结为:
private List<ResultKey> GetKeyList(string prefix, List<float> xCoordList, List<float> yCoordList)
{
var keyList = new List<ResultKey>();
var constantSensorName = "xxx";
foreach (float xCoord in xCoordList)
{
foreach (float yCoord in yCoordList)
{
string stationName = string.Format("{0}_E{1}N{2}", prefix, xCoord, yCoord);
keyList.Add(new ResultKey(constantSensorName, stationName));
}
}
return keyList;
}
public struct ResultKey
{
public …Run Code Online (Sandbox Code Playgroud) 我有一个DataGridView,我这样填写:
private void FillDataGridView(string stringTable)
{
var lines = stringTable.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
var columns = lines.First().Split('\t');
foreach (var columnName in columns)
this.dataGridView.Columns.Add(columnName, columnName);
foreach (var line in lines.Skip(1))
{
var cells = line.Split('\t');
// This operation is too slow when applied to a huge amount of rows:
this.dataGridView.Rows.Add(cells);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是速度Rows.Add(cells)太慢(我有大量数据)。
这是以下内容的示例stringTable:
TIME Temperature
30.03.1992 10:00:00 7.500
30.03.1992 11:00:00 9.300
30.03.1992 12:00:00 10.000
30.03.1992 13:00:00 10.400
30.03.1992 14:00:00 11.400
30.03.1992 15:00:00 …Run Code Online (Sandbox Code Playgroud) 这是代码:
public class ParameterDictionary : Dictionary<HydroObjectIdentifier, string>
{
public void WriteToJson(string jsonFilePath)
{
string json = Newtonsoft.Json.JsonConvert.SerializeObject(this, formatting: Newtonsoft.Json.Formatting.Indented);
System.IO.File.WriteAllText(jsonFilePath, json);
}
}
public struct HydroObjectIdentifier
{
public string Name { get; set; }
public string TypeName { get; set; }
public HydroObjectIdentifier(string name, string typeName)
{
this.Name = name;
this.TypeName = typeName;
}
}
Run Code Online (Sandbox Code Playgroud)
...这就是Json的结果。请注意,它显示的是类名RSEngine.HydroObjectIdentifier而不是其参数,这在我的代码中不是预期的。
{
"RSEngine.HydroObjectIdentifier": [
{
"myString"
},
...
Run Code Online (Sandbox Code Playgroud)
如注释中所述,预期的行为是将Name和TypeName写入json而不是类的名称。
这是声明我的代码行DatePickerTextBox:
<DatePickerTextBox Text="{Binding dateOfBirth, StringFormat=dd-MM-yyyy}" />
Run Code Online (Sandbox Code Playgroud)
(注意StringFormat=dd-MM-yyyy)
当DatePickerTextBox占位符为空时<Enter text here>,我在其中写入如下内容:
01-02-0003
Run Code Online (Sandbox Code Playgroud)
...在外部单击后DatePickerTextBox,显示的文本自动更改为:
02-01-0003
Run Code Online (Sandbox Code Playgroud)
(即:自动切换月和日)
我该如何解决这个问题?
我正在使用的项目:来自nuget的ImgurNet(来源:https ://github.com/0xdeafcafe/ImgurNet )
看起来它需要所有这些参数:
{
"client_id": "Insert your imgur client_id here",
"client_secret": "Insert your imgur client_secret here",
"access_token": "Insert your imgur access_token here",
"refresh_token": "Insert your imgur refresh_token here",
"authorized_username": "Insert your imgur username here"
}
Run Code Online (Sandbox Code Playgroud)
...而在 imgur 中我只能得到client_id+ client_secret。
Imgur API 文档提到了这些,但没有说明如何获取它们:https://api.imgur.com/oauth2
额外细节:
我使用它是ImgurNet因为它是我能够在 Xamarin 项目中安装的唯一 imgur api nuget 包(所有其他包都不兼容)。
这是我正在使用的代码的示例:
var oauth2Authentication = new OAuth2Authentication("my_client_id", "my_client_secret", false);
var imgurClient = new Imgur(oauth2Authentication);
var imageEndpoint = new ImageEndpoint(imgurClient);
var result = imageEndpoint.UploadImageFromBinaryAsync(imageBinary, …Run Code Online (Sandbox Code Playgroud) 使用类bottom-0 end-0(至少是我使用它们的方式)没有达到我期望的结果。我想我不明白关于 css 和定位的一些非常基本的东西。
这是代码的最小独立示例:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<!-- Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/js/bootstrap.bundle.min.js" integrity="sha384-b5kHyXgcpbZJO/tY9Ul7kGkf1S0CWuKcCD38l8YkeH8z8QjE0GmW1gYU5S9FOnJ0" crossorigin="anonymous"></script>
<script type="text/javascript">
/**
* Usage: showToast('hey!', 'success');
*/
function showToast(toastBody, color) {
var delay = 3000;
var html =
`<div class="toast align-items-center text-white bg-${color} border-0" role="alert" aria-live="assertive" aria-atomic="true">
<div class="d-flex">
<div class="toast-body">
${toastBody}
</div>
<button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast" aria-label="Close"></button>
</div>
</div>`;
var toastElement = htmlToElement(html);
var toastConainerElement = document.getElementById("toast-container");
toastConainerElement.appendChild(toastElement);
var toast …Run Code Online (Sandbox Code Playgroud)我不能让{Binding Title}inHeaderTemplate出现。
这是连接到 BindingContext 的类:
class SensorGroup
{
public string Title { get; set; }
public IList<Sensor> Sensors { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<ListView Header=""
ItemsSource="{Binding Sensors}">
<ListView.HeaderTemplate>
<DataTemplate>
<Grid>
<Label Text="{Binding Title}"/>
</Grid>
</DataTemplate>
</ListView.HeaderTemplate>
<ListView.ItemTemplate>
...
</ListView>
Run Code Online (Sandbox Code Playgroud)
如果我用 替换它<Label Text="Some static text"/>,文本就会出现。
我找到了这个相关的问题,它链接到另一个问题。但我无法让它发挥作用。我试过:
<ContentPage.Resources>
<Label x:Key="MyTitle"
Binding="{Title}"/>
</ContentPage.Resources>
...
<Grid>
<StaticResource ResourceKey="MyTitle"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
它给了我一个错误,说Title无法找到绑定。
我正在使用NuGet包MSBuild.ILMerge.Task将.NET外部dll组合到一个可执行文件中.它就像一个魅力.
现在,当我尝试在调试时进行编辑时,Visual Studio说:
如果尚未加载程序集,则不允许进行更改
我想这是将所有依赖项都放入单个.exe中的缺点(我不知道,这只是猜测).
但无论如何,MSBuild.ILMerge.Task在Build 上使用它是有意义的,但在Debug上是不活动的.有谁知道如何实现这一目标?
请注意,当MSBuild.ILMerge.Task通过NuGet安装时,当您点击"rebuild"时,它会自动创建单个.exe(当然,将.config文件放在外面,加上.pdb).您不需要配置任何东西,这就是为什么我无法猜测流程的内部工作原理以及如何将其取消激活.
有关更多信息,我正在写一篇关于ILMerge的博客文章.我想记录所有的方法,问题和警告:
http://localcode.wikidot.com/merge-all-binary-files-dll-s-etc-into-a-single-exe
Edit1:我注意到NuGet包会自动设置一个.props包含以下信息的文件:
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
Run Code Online (Sandbox Code Playgroud)
我已经开始寻找DefaultTargets="Build"和禁用调试的方法,我发现这篇文章似乎解释了如何.
EDIT2:
如果从我的.csproj中删除这一行,那么它会正确跳过ILMerge编译:
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.props'))" />
<Error Condition="!Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets'))" />
</Target>
<Import Project="..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets" Condition="Exists('..\packages\MSBuild.ILMerge.Task.1.0.5\build\MSBuild.ILMerge.Task.targets')" />
Run Code Online (Sandbox Code Playgroud)
这是什么,但它看起来有点手工制作,目前还不切实际......
该脚本正确安装了驱动器,但重新启动计算机后驱动器未保留:
\nfunction RemapDrive {\n param( \n $DriveLetter,\n $FullPath,\n $Credential \n )\n \n Write-Host "Trying to remove $DriveLetter in case it already exists ..." \n # $DriveLetter must be concatenated with ":" for the command to work\n net use "${DriveLetter}:" /del\n \n ## $DriveLetter cannot contain ":"\n $psDrive = New-PSDrive -Name "$DriveLetter" -PSProvider "FileSystem" -Root "$FullPath" -Credential $Credential -Scope "Global" -Persist\n \n Write-Host "$DriveLetter was successfully added !" \n}\n\nfunction BuildCredential {\n param (\n $Username,\n $Password\n )\n $pass = ConvertTo-SecureString $Password …Run Code Online (Sandbox Code Playgroud) c# ×8
xamarin ×2
xaml ×2
.net ×1
.net-core ×1
asp.net ×1
bootstrap-5 ×1
datagridview ×1
datepicker ×1
dictionary ×1
html ×1
ilmerge ×1
imgur ×1
javascript ×1
json.net ×1
msbuild ×1
msbuild-task ×1
powershell ×1
toast ×1
vue.js ×1
winforms ×1
wpf ×1