请帮忙,我已经尝试了其他一切我能想到的解决这个问题的方法.
在您回复之前请注意:
我已经在StackOverflow.com上的其他问题和web上的其他问题上做了我所能做的一切.例如但不限于:将构建配置从"任何CPU"更改为"x64"甚至更改为"x86".并且还将目标版本从.NET 4.0更改为.NET 3.5(这不起作用,因为我使用的是需要.NET 4.0的System.Windows.Interactivity)所以我更倾向于使用.NET 4.0.所以请不要回答告诉我这样做,因为我已经尝试了各种组合.
我在VS2013中有一个名为TimersXP的项目,它是CodePlex.com上的一个开源项目:https://timersxp.codeplex.com/
它构建没有任何错误,但我得到一个运行时异常:System.BadImageFormatException未处理消息:未知模块中发生未处理的类型'System.BadImageFormatException'异常.附加信息:无法加载文件或程序集"TimersXP.exe"或其依赖项之一.此程序集由比当前加载的运行时更新的运行时构建,无法加载.
有点历史,该项目最初是.NET 3.5,但当我发现我必须添加System.Windows.Interactivity并且必须支持.NET 4.0时,我提出了版本号.
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Program Files (x86)\Microsoft SDKs\Expression\Blend\.NETFramework\v4.0\Libraries\System.Windows.Interactivity.dll</HintPath>
<Private>False</Private>
</Reference>
Run Code Online (Sandbox Code Playgroud)
是的我知道它说版本4.5.0.0.我也试过了它的组合.除非我错过了一些与预期不同的组合.
它是开源的,所以项目的所有代码都可用,有人可以帮帮我吗?我担心我没有想法.
也许在App.config文件中这个版本号?
<?xml version="1.0"?>
<configuration>
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
Run Code Online (Sandbox Code Playgroud)
我不想只是浏览所有代码并将其所说的版本更改为3.5或4.0或4.5.这似乎不是一个好主意.
像往常一样,一旦我看到它,我可能想踢自己!
我正在尝试编写一个脚本,需要根据CSS选择器找到的特定浏览器对象是否存在来调整其工作流行为.
我不想使用document.getElementByID方法,因为这在技术上不是一个CSS选择器,我们的整个企业都是在CSS选择器上标准化的,所以除了CSS选择器以外的任何东西都不会超过我们的代码审查过程无论如何.
var thing = await things.thingSelector(thingName);
if (await t.expect(thing.exists).notOk()) {
await t.click(things.OpenThing(thingName));
} else {
return false;
}
return true;
Run Code Online (Sandbox Code Playgroud)
thingSelector的位置是:
const thingSelector = name =>
Selector('p.thing-header-title span')
.withText(name)
.parent('div.thing');
Run Code Online (Sandbox Code Playgroud)
OpenThing的地方是:
const OpenThing = name =>
thingSelector(name)
.find('a.thing-footer-item')
.withText('Open');
Run Code Online (Sandbox Code Playgroud)
我需要能够继续执行,如果对象不在那里,我正在检查它是否存在,或者对象是否存在,我正在检查它是否存在,以及对象不存在的情况它不存在,对象不存在,我正在检查它不存在.
在所有情况下,我仍然需要继续工作流程.
我尝试过逻辑硬币的两面:
if (!await t.expect(thing.exists).ok())
Run Code Online (Sandbox Code Playgroud)
和
if (await t.expect(thing.exists).notOk())
Run Code Online (Sandbox Code Playgroud)
如果上述某个方案在一个方案中没有失败,则在另一个方案中将失败,而另一个方案将在第一个方案没有失败的情况下失败.我需要一些能给我逻辑的东西,但不会让脚本执行失败,并且仍然允许我返回True或False,具体取决于对象是否存在.
提前感谢您帮助我解决这个问题,并学习和发展我的Javascript技能!
我想要完成的事情:
我想了解如何配置 Electron-Builder/Webpack 来打包非代码文件(配置文件、XML 文件、元数据文件、JSON 文件),这样当安装程序安装应用程序时,这些文件将保存在用户家中本地机器上的目录。我明白将这些文件存储在已安装的二进制文件之外的重要性,因此当用户更新他们的版本时,他们不会丢失他们可能设置的任何自定义。但是这些文件的初始版本必须存在于某个地方,例如这些文件的模板版本。
我找到了一些教程,解释了如何将这些非代码文件作为包的一部分包含在内: Electron - 如何添加外部文件?
如何管理 Webpack/Electron 应用程序的配置?
但是我从这些帖子中没有看到或理解的是如何配置安装程序,以便在运行时,这些文件将被复制到用户主目录(appData 文件夹)。特别是如果这些文件已经安装以避免覆盖它们或询问用户是否要覆盖它们?怎么设置呢?
还必须有一些配置设置,以允许这些文件保留在 Github 存储库中,并使开发人员能够使用这些非代码文件的开发路径,同时不会破坏用户安装版本上这些文件的生产路径。如何设置这种配置?
这是我项目中的文件夹结构:
src
- Application
- electronVueJS-App
- application.js
- App.vue
- build.js
- registerServiceWorker.js
- ...Rest of the files/folders for the application....
- Resources
- Configuration
- Colors.csv
- Configuration.xml
- Framework
- CommandsBlob
- commands.xml
- Workflows
- workflows.xml
- ....Rest of my code files/folders....
Run Code Online (Sandbox Code Playgroud)
我想第 1 步可能会让我将所有非代码 XML 文件移动到至少 2 个文件夹中,一个在 Application 文件夹中,另一个在 Framework 文件夹中,我准备这样做,但我想全面了解所有这些 Electron-Builder/WebPack/Installer 配置是如何设置的,以便在我重新构建应用程序代码之前,配置文件将安装在用户本地系统的主目录路径中。
我想还有其他问题,但我想我可以尝试单独解决这些问题,如果我遇到另一个阻止程序,则提交另一个问题。但是,如果您有可以帮助我的链接,请务必分享。
设置自动更新程序后,如何告诉用户特定更新是否需要对其配置文件进行重大更改。
如何设置卸载程序,以便用户可以选择在卸载过程后保持配置文件完好无损,或者继续删除所有内容? …
installation uninstallation webpack electron electron-builder
我在一个xaml文件中有一个ResourceDictionary,它表示我的硬盘驱动器上某个随机文件夹中的一个皮肤.说D:\ Temp2\BlackSkin.xaml.
我已正确设置权限以提供完全访问权限,因此不是问题.
这个ResourceDictionary BlackSkin.xaml像这样引用了一个BaseSkin.xaml:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="{D:\Temp2\BaseSkin.xaml">
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)
所以我正在使用XamlReader.Load(...)加载这个BlackSkin.xaml
如果我把它工作正常:
Source="D:\Temp2\BaseSkin.xaml"/>
Run Code Online (Sandbox Code Playgroud)
这当然是硬编码的路径.我想提供一个相对路径,而不是相对于正在运行的当前应用程序,但是当前正在加载的皮肤的相对路径(BlackSkin.xaml)...又名"D:\ Temp2\BaseSkin.xaml".. .or ...如果您只是"BaseSkin.xaml",因为它们位于同一个文件夹中,该文件夹与应用程序的文件夹不同.
我是否需要定义自定义标记扩展才能执行此操作?如果是这样,我会把它放在我的项目中?只需创建一个名为"Extensions"的文件夹并创建一些随机的.cs文件并在那里实现它?调用XamlReader.Load(...)时会调用这样的自定义标记扩展吗?
然后,我需要将此自定义标记扩展绑定到程序中,以从我的应用程序中的某个设置或配置文件获取完全限定的路径,并将路径作为ProvideValue函数的一部分返回?
有没有其他方法可以做到这一点?
比如我在这里调用XamlReader.Load(fileStream):
public void ApplySkin(string fileName, string baseSkinFileName)
{
if (File.Exists(baseSkinFileName))
{
ResourceDictionary baseSkinDictionary = null;
using (FileStream baseSkinStream = new FileStream(baseSkinFileName, FileMode.Open))
{
//Read in the BaseSkin ResourceDictionary File so we can merge them manually!
baseSkinDictionary = (ResourceDictionary)XamlReader.Load(baseSkinStream);
baseSkinStream.Close();
}
using (FileStream fileStream = new FileStream(fileName, FileMode.Open))
{
// Read in ResourceDictionary File
ResourceDictionary skinDictionary = (ResourceDictionary)XamlReader.Load(fileStream);
skinDictionary.MergedDictionaries.Add(baseSkinDictionary); …Run Code Online (Sandbox Code Playgroud) 我有大量的测试,昨天晚上我开始工作,然后才离开工作。我让他们彻夜难眠。我们的测试平台是TestCafe / Atom / Node.JS。我们还没有一个报告系统,因此无论运行什么,结果都会在控制台窗口中报告为“失败”。
显然,我的计算机决定进行某种自动更新并重新启动。因此,当我进入办公室时,没有控制台,也没有运行Atom的实例。这意味着我看不到昨晚的测试结果。
在没有报告系统的情况下,我可以找到这些测试结果吗?还是我只需要将此最后的通宵测试运行结果视为总损失?
有人可以解释下面的语法糖吗?
protected MyConstructor() : this(null)
Run Code Online (Sandbox Code Playgroud)
主要是我对这部分感兴趣:" : this(null)"
我知道受保护的,构造函数和"this"关键字是如何工作的,但我很困惑,无法在我的所有在线搜索中找到最后一部分的所有详细信息.
编辑:我应该补充一点,它是在一个公共抽象类中.所以我猜构造函数正在调用实现者构造函数.
谢谢
首先,我查看了StackOverflow.com上的其他相关帖子,并且更改csproj文件中的路径并没有对此警告产生任何影响,如下所示.参考:为什么我在项目文件中找不到此警告.cs文件 还有: 如何连接xaml和xaml.cs文件
我有相当于MainWindow.xaml和MainWindow.xaml.cs.我决定将这两个文件移到Views文件夹中,因为我不喜欢我的主窗口视图与csproj文件以及App.xaml/App.xaml.cs文件一起浮动.
基本上:
查看/ MainWindow.xaml
查看/ MainWindow.xaml.cs
所以我的第一个问题:这是不允许的?我们是否需要将MainWindow.xaml和MainWindow.xaml.cs文件与csproj文件放在同一位置?
第二个问题:如果没有,那么我还缺少什么,因为我很确定我已经正确设置了所有路径?
<Page Include="Views\TimersHost.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="Views\TimersHost.xaml.cs">
<DependentUpon>Views\TimersHost.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
Run Code Online (Sandbox Code Playgroud)
我甚至将它们放在相同的标签中,因此编译器没有混淆的余地,但它仍然抱怨警告:文件'Views\TimersHost.xaml'的父文件'Views\TimersHost.xaml'在项目文件中找不到.cs'.
该警告实际上似乎表明它是MainWindow.xaml的父级是无法找到的,但从技术上讲没有父级,除非它指的是csproj文件本身,这就是为什么我问我们是否需要有MainWindow.xaml与csproj文件位于同一位置.
例如,在这篇文章中提到MainWindow.xaml应该放在Views文件夹中,这正是我想要做的: WPF中MVVM的项目结构
所以我很确定我只是遗漏了一些东西,但不知道它可能是什么,或者在哪里开始寻找.甚至我在App.xaml中的StartupUri也正确设置为指向该文件:
<Application
x:Class="TimersXP.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="Views/TimersHost.xaml"
/>
Run Code Online (Sandbox Code Playgroud)
也许在TimersHost.xaml文件中我需要指定类的路径?x:Class ="Views/TimersXP.TimersHost"....这没有任何意义,并且无论如何都不起作用.
它是一个开源项目,所以这里是完整的csproj文件源:http://timersxp.codeplex.com/SourceControl/latest#VS2013/TimersXP/TimersXP.csproj (最新版本是最新的)
以下是我的问题摘要:我们在文件共享应用程序中有一个带有复选框和文件名的表.表格顶部是"设置预览"按钮,可让预览轮播始终显示默认预览项目.用户可以单击复选框并单击设置预览按钮,预览项目将更改,预览轮播将更新.
我有一个测试自动化脚本,使用TestCafe,NodeJS和ES6测试用JavaScript编写的这种行为.
当我们测试预设时,我们单击要为其设置预览的项目的复选框.然后我们单击"设置预览"按钮.确认我们刚刚单击该复选框的那一行上设置了预览图标.有一些事项需要注意:当用户单击复选框时,如果选中的复选框已将预览设置为该行,则禁用设置预览按钮.此外,单击设置预览时,将自动取消选中检查的任何行.
因此,如果检查已经设置了预览的行,则用户将无法单击设置的预览,因此永远不会取消选中该复选框.当循环重置并检查下一个项目时,现在检查了两个项目并禁用了设置预览,因为无法使用设置预览设置两个项目.
我添加了代码来检查是否检查了当前行以及是否; 取消选中它.问题是当我检查复选框的状态以查看是否已选中时:
var checkbox = await projectDetails.tableRowCheckBox(fileName);
if (checkbox.checked === true) {
Run Code Online (Sandbox Code Playgroud)
即使选中了复选框,也会返回false.因此它永远不会被取消选中并且脚本失败.TestCafe网站提供了一个类似的示例,说明如何执行此操作:https://devexpress.github.io/testcafe/documentation/test-api/actions/click.html
所以我认为它应该可行,并且互联网上有一些其他形式在复选框上显示类似的if条件检查,所以这看似有效的代码,但它仍然无法正常工作.
我还没有尝试过的一个可能的解决方案是检查预览行是否已经设置为当前行,以及是否要完全跳过该行.然而,即使这解决了我的全部问题,我仍然想解决这个问题.这就是我在这里发布的原因.
编辑:另一方面,在我添加if条件(即失败)之前,在我看来我在那里点击了,我运行了脚本,光标移动到复选框以取消选择它,但它实际上没有取消选中该复选框.虽然我本来可以弄错,只是在设置预览后重新选择了复选框,预设本身会自动取消选中复选框.(好吧,现在我的头脑真的在圈子里)
更完整的代码:
for (var j = 0; j < dataElementCount; j++) {
// Act
await t.click(projectDetails.tableRowCheckBox(fileName).with({ selectorTimeout: 30000}));
await t.click(projectDetails.setPreviewButton, { selectorTimeout: 5000 });
// Assert
var previewRow = projectDetails.previewRow;
// NOTE: Do not feed in test data that doesn't support the preview, or setting the preview will fail for that item.
// tif and tiff files are not …Run Code Online (Sandbox Code Playgroud) c# ×4
javascript ×3
node.js ×3
testcafe ×3
.net ×2
ecmascript-6 ×2
wpf ×2
xaml ×2
atom-editor ×1
checkbox ×1
code-behind ×1
console ×1
constructor ×1
electron ×1
installation ×1
mvvm ×1
null ×1
syntax ×1
webpack ×1