小编Kir*_*ari的帖子

Kotlin Compose 预览参考未解决

我正在使用 Compose 开发适用于 Android 和桌面的 Kotlin 多平台项目,并安装了 Compose 多平台 IDE 支持插件。

我想做的是添加注释,@Preview以便我可以预览我正在处理的可组合项。我尝试按照本指南来实现:

https://developer.android.com/jetpack/compose/tooling/studio

我希望在 module 中拥有共享的 Compose 类shared-ui,因此我在该 module 中添加了以下依赖项build.gradle.kts

dependencies {
    debugImplementation("androidx.compose.ui:ui-tooling:1.3.2")
    implementation("androidx.compose.ui:ui-tooling-preview:1.3.2")
}
Run Code Online (Sandbox Code Playgroud)

但是,即使在同步之后,当我尝试@Preview在类 ( shared-ui/src/commonMain/kotlin/.../MyScreen.kt) 中使用或导入注释时,也会收到此错误:

Unresolved reference: preview
Run Code Online (Sandbox Code Playgroud)

这种情况发生两次:一次是在 import 语句中,最后一个单词Preview是红色的;一次是在注释中,它也是Preview红色的单词:

[...]
import androidx.compose.ui.tooling.preview.Preview
[...]

@Preview
@Composable
[...]
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我还尝试了 Android Studio 为我提供的快速修复选项:“添加对 androidx.compose.ui.ui-tooling-preview 和导入的依赖”。它所做的就是将依赖项准确添加到我添加它们的位置(前提是我先删除它们,否则它什么也不做),这显然意味着 Android Studio 同意我的观点,这就是依赖项应该去的地方。

这引出了我的终极问题:为什么这不起作用?我究竟做错了什么?根据我的理解,这应该可行。但事实并非如此。我错过了什么吗?

preview kotlin android-studio gradle-dependencies android-jetpack-compose

11
推荐指数
0
解决办法
1312
查看次数

未找到 Teamcity 工件路径

我在 TeamCity 中有一个项目,具有以下有关工件路径的构建设置:

\n\n
artifacts => artifacts\n3rdPartyDlls => 3rdPartyDlls\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,当我构建项目时,我收到以下警告:

\n\n
[12:40:46]Publishing artifacts (1s)\n[12:40:46][Publishing artifacts] Collecting files to publish: [artifacts => artifacts, 3rdPartyDlls => 3rdPartyDlls]\n[12:40:46][Publishing artifacts] Artifacts path \'artifacts\' not found\n[12:40:46][Publishing artifacts] Publishing 42 files using [WebPublisher]: 3rdPartyDlls => 3rdPartyDlls\n[12:40:46][Publishing artifacts] Publishing 42 files using [ArtifactsCachePublisher]: 3rdPartyDlls => 3rdPartyDlls\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在,我已经检查了 TeamCity Build Agent 的工作目录,并且在同一文件夹\xc2\xb4 中并排存在“3rdPartyDlls”和“artifacts”目录。

\n\n

我不明白 TeamCity 如何找到“3rdPartyDlls”而不是“artifacts”文件夹,即使它们都在那里。

\n\n

有人可以帮我解决这个问题吗?

\n\n

预先感谢,\nKira Resari

\n

teamcity

5
推荐指数
0
解决办法
2088
查看次数

将 Team City 版本推送至 Octopus Deploy

我在尝试将 .zip 工件从 Team City 推送到 Octopus Deploy 时遇到问题,想寻求一些帮助。

使用 Team City 上的“OctopusDeploy:推送包”运行器,我尝试将工件“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip”推送到我们的 Octopus 服务器。

但是,此操作失败并显示以下错误消息:

[04:58:19][Octopus Deploy] Please specify a package to push
[04:58:19][Octopus Deploy] Exit code: -1
[04:58:19][Octopus Deploy] Octo.exe exit code: -1
[04:58:19][Step 3/3] Unable to create or deploy release. Please check the build log for details on the error.
Run Code Online (Sandbox Code Playgroud)

在 Team City 构建配置的“常规设置”部分的“工件路径”字段中,我定义了要创建的以下工件:

+:Release => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip
-:Release/**/*.xml => Release.%MajorVersion%.%MinorVersion%.%build.number%.zip
Run Code Online (Sandbox Code Playgroud)

这将在路径 [Team City Data Directory]\system\artifacts[项目名称][配置名称][唯一内部版本号]中创建文件“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip”。

接下来,我尝试使用“OctopusDeploy:推送包”运行程序将此包推送到我们的 Octopus 服务器,并将“包路径”参数设置为“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip” ,因为描述性文本显示“这些遵循与 TeamCity 工件路径相同的规则”。

然而,这似乎不起作用。

我想知道为什么,以及如何让它发挥作用。

此时我的主要问题是我不知道如何解决可变工件目录中的“Release.%MajorVersion%.%MinorVersion%.%build.number%.zip”文件。

teamcity octopus-deploy

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

Dockerfile ~ 添加 Windows 文件夹的正确语法

我正在尝试创建一个 Dockerfile,将本地 Windows 文件系统上某处的文件夹添加到 Windows 容器中。但是,我很难找出正确的语法。

具体来说,我尝试将目录 [C:\Foo Source Files\Zog Foo\Bar] 的内容复制到 Windows Docker 容器中的 [C:\Bar]。

到目前为止,我已经尝试了以下变体:

ADD ["C:\Foo Source Files\Zog Foo\Bar", "C:/Bar"]
ADD ["C:\Foo Source Files\Zog Foo\Bar\", "C:/Bar/"]
Run Code Online (Sandbox Code Playgroud)

当尝试运行构建映像时,这些导致出现以下错误:

failed to process "[\"C:\\Foo": unexpected end of statement while looking for matching double-quote
Run Code Online (Sandbox Code Playgroud)

相比之下,以下变体...

ADD ["C:/Foo Source Files/Zog Foo/Bar", "C:/Bar"] 
ADD ["C:/Foo Source Files/Zog Foo/Bar/", "C:/Bar/"]
ADD ["C:\\Foo Source Files\\Zog Foo\\Bar\\", "C:/Bar/"]
ADD ["C:\\\\Foo Source Files\\\\Zog Foo\\\\Bar\\\\", "C:/Bar/"]
ADD ["C:\\\\Foo Source Files\\\\Zog Foo\\\\Bar", "C:/Bar/"]
ADD C:/Foo Source Files/Zog Foo/Bar/, C:/Bar/ …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile windows-container

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

Docker ~ 粘贴到交互式 PowerShell 终端中

我有以下问题:

\n\n

在 Windows 计算机上,我使用 PowerShell CLI 来运行运行 microsoft/mssql-server-windows-express 的容器。我可以使用命令“docker exec -it my_container powershell”在该容器中打开交互式 PowerShell 会话,但在该交互式终端中,我无法从外部粘贴任何文本。

\n\n

比如说,我想粘贴以下行:

\n\n
echo (Get-ItemProperty -Path \xe2\x80\x98Registry::HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\Environment\xe2\x80\x99 -Name PATH).path\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用 [Ctrl]+[V] 仅返回以下内容(与非交互式 docker PowerShell 会话 PowerShell CLI 不同,在其中粘贴文本没有任何问题):

\n\n
^V\n
Run Code Online (Sandbox Code Playgroud)\n\n

我还尝试过右键单击控制台背景,或右键单击控制台窗口标题,然后选择[编辑] > [粘贴]。但是,这只会提供以下损坏和截断的结果:

\n\n
echo (Get-ItemProperty -Path ?^?^?Registry::HKEY_LOC\n
Run Code Online (Sandbox Code Playgroud)\n\n

我已经尝试将以下行添加到我的 Dockerfile 中,如本页所述所述:

\n\n
WORKDIR "Program Files"\nRUN rd /S /Q WindowsPowerShell\\Modules\\PSReadLine\nWORKDIR /\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,这只会在尝试构建映像时导致以下错误:

\n\n
Step 11/12 : RUN rd /S /Q WindowsPowerShell\\Modules\\PSReadLine\n ---> Running in 95497bbaf4cf\nRemove-Item : A positional …
Run Code Online (Sandbox Code Playgroud)

powershell docker

5
推荐指数
0
解决办法
825
查看次数

可以显示哪种字体?(左半黑星)

我正在寻找一种可以显示字符的字体?(U+2BE8 "Left Half black Star") 来自 unicode block Miscellaneous Symbols and Arrows ( https://unicode-table.com/en/2BE8/ )。

有什么方法可以让我找出哪些字体可以显示该字符?对于这种情况,我已经尝试了我常用的常用字体,即 Arial Unicode、Segoe UI Symbol 和 Consolas,但它们都无法正确渲染字符。

fonts

5
推荐指数
0
解决办法
665
查看次数

JUnit ~ 断言该列表包含具有任意顺序的相同值的对象

我的用例是,我正在编写一个文档解析器(用于 ReqIF 文档),并且想要比较解析的对象是否包含预期的元素。为此,我想编写一个 JUnit 测试。

实际上,我正在寻找的是一种断言方法,该方法将两个对象列表与值进行比较,并在两个列表包含(以任何顺序)与引用列表具有相同值的对象时通过。

为了抽象这一点,请考虑以下示例:

Apple referenceApple1 = new Apple(color="red");
Apple referenceApple2 = new Apple(color="green");
Apple parsedApple1 = new Apple(color="red");
Apple parsedApple2 = new Apple(color="green");
Apple badApple = new Apple(color="brown");

List<Apple> referenceList = new List<Apple>(referenceApple1, referenceApple2);
List<Apple> correctlyParsedList1 = new List<Apple>(parsedApple1, parsedApple2);
List<Apple> correctlyParsedList2 = new List<Apple>(parsedApple2, parsedApple1);
List<Apple> wronglyParsedList1 = new List<Apple>(parsedApple1, badApple);
List<Apple> wronglyParsedList2 = new List<Apple>(parsedApple1, parsedApple2, parsedApple1);
List<Apple> wronglyParsedList3 = new List<Apple>(parsedApple2, parsedApple2);
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种断言方法,该方法在将上述任何内容correctlyParsedList*与进行比较时通过referenceList,但在将上述任何内容wronglyParsedList*与进行比较时失败referenceList

目前,我最接近的是:

assertEquals(referenceList.toString(), …
Run Code Online (Sandbox Code Playgroud)

java junit unit-testing jdom-2

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

如何在windows启动时自动启动docker容器~等待docker运行

我有一个每次启动开发电脑时都非常需要的容器,所以我试图让它自动启动。

我已经编写了一个 .bat 文件,一旦 docker 启动,它就可以很好地启动容器,并将其放入 Windows 上的自动启动文件夹中,但是......

...当启动我的电脑时,.bat 在 docker 开始运行之前执行,因此在不启动容器的情况下终止。一旦 docker 启动并运行,我就可以手动使用 .bat 来启动它了。

所以这是我的问题:我可以在 .bat 中添加任何内容来告诉它在尝试启动容器之前等待 docker 运行吗?

目前,蝙蝠只是简单地说docker-compose up,没有别的。

windows boot batch-file autostart docker

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

Visual Studio ~ 测试项目找不到测试项目的命名空间

我有一个 C# ASP.NET Core 项目,我想为其编写测试。但是,由于某些奇怪的原因,测试项目找不到我想要测试的项目的名称空间(因此也找不到类)。即使我清楚地引用了主要项目,这种情况也会发生。怎么会这样?

我得到的具体错误是:

The type or namespace name 'DeviceWebDisplay' could not be found (are you missing a using directive or an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

如前所述,即使我确实项目引用添加到DeviceWebDisplay. 事实上,VisualStudio 甚至为我提供了快速操作“添加对‘DeviceWebDisplay’的引用”。但是,无论我是否已经添加了此操作,单击该快速操作都不会产生任何效果。

有谁知道是什么原因造成的吗?作为参考,这是我用于这两个项目的模板:

  • DeviceWebDisplay:ASP.NET Core Web 应用程序
  • DeviceWebDisplayTest:单元测试项目(.NET Framework)

在此输入图像描述

编辑:

我认为它可能是测试项目的目标框架,但由于某种原因,它只能达到 6.0,并且下载网站(当我单击“安装其他框架...”时到达)不提供任何适用于 Visual Studio 2022 的 SDK。

在此输入图像描述

在此输入图像描述

问题是,我的 Visual Studio 显然已经安装了 .NET 6.0,否则我将无法在我的主项目中使用它。

也许我需要为测试项目使用不同的模板?

c# unit-testing visual-studio

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

如何向 Kotlin 多平台移动项目添加桌面支持

我使用 Android Studio 和 Kotlin Multiplatform Mobile 插件创建了一个 KMM 项目,它提供对 Android 和 iOS 的支持。

但是,我还希望能够使用相同的代码库和 UI 进行部署以创建桌面应用程序。那可能吗?如果是的话,怎么办?

mobile desktop kotlin-multiplatform

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

无法删除项目,目录不为空

使用Remove-Item命令时,即使使用-r-Force参数,有时也会返回以下错误消息:

Remove-Item:无法删除项目C:\ Test Folder \ Test Folder \ Target:目录不为空。

特别是在Windows资源管理器中打开要删除的目录时,会发生这种情况。

现在,虽然可以通过关闭Windows资源管理器或不浏览该位置来避免这种情况,但是我在多用户环境中工作脚本(在这种环境下,人们有时会忘记关闭Windows资源管理器窗口,但我对删除的解决方案感兴趣)即使在Windows资源管理器中打开了整个文件夹和目录。

有没有比-Force我可以设置的功能更强大的选项了?

为了可靠地重现此内容,请创建文件夹C:\Test Folder\Origin并在其中填充一些文件和子文件夹(重要),然后采用以下脚本或类似的脚本并执行一次。现在打开C:\Test Folder\Target(在我的情况下,我使用C:\Test Folder\Target\Another Subfoldercontains A third file.txt)的子文件夹之一,然后尝试再次运行该脚本。您现在将得到错误。如果您第三次运行该脚本,则不会再次收到该错误(但是,根据我尚未确定的情况,该错误有时会第二次发生,然后再也不会发生,有时又第二次发生一次)。

$SourcePath =  "C:\Test Folder\Origin"
$TargetPath =  "C:\Test Folder\Target"

if (Test-Path $TargetPath) {
    Remove-Item -r $TargetPath -Force
}
New-Item -ItemType directory -Path $TargetPath 

Copy-Item $SourcePath -Destination $TargetPath -Force -Recurse -Container 
Run Code Online (Sandbox Code Playgroud)

windows powershell

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

MongoDB Java CodecConfigurationException 找不到公共构造函数

我正在尝试创建一个 Java 程序,用于从 MongoDB 读取和写入复杂对象,例如......

public class GameCharacter {
    public String name;
    public Weapon weapon;
    public Armor armor;

    public GameCharacter(String name, Weapon weapon, Armor armor) {
        this.name = name;
        this.weapon = weapon;
        this.armor = armor;
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经成功地通过设置此编解码器来编写它,并且我可以在数据库中检查所有数据是否以正确的结构正确写入:

        CodecRegistry defaultCodecRegistry = MongoClient.getDefaultCodecRegistry();
        PojoCodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
        CodecRegistry pojoCodecRegistry = fromRegistries(defaultCodecRegistry, fromProviders(pojoCodecProvider));

        MongoDatabase characterDatabase = mongoDatabaseConnectionPool.getDatabase(CHARACTER_DATABASE_NAME);
        characterDatabase = characterDatabase.withCodecRegistry(pojoCodecRegistry);
        MongoCollection<GameCharacter> characterCollection = characterDatabase.getCollection(CHARACTER_COLLECTION_NAME, GameCharacter.class);

        Character testCharacter = new Character ("Sylvia Zerin", testWeapon, testArmor);
        characterCollection.insertOne(testCharacter);
Run Code Online (Sandbox Code Playgroud)

...但是,当尝试再次从该数据库读取 GameCharacter 时,如下所示:

        FindIterable<GameCharacter> characters = characterCollection.find(); …
Run Code Online (Sandbox Code Playgroud)

java mongodb

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

如何确保测试始终在同一时区运行

我有一个函数可以将 Unix 纪元时间解析为yyyy-MM-dd'T'HH:mm:ss.SSSXXX如下格式,以便将其导出到文件中:

    public static final SimpleDateFormat REQIF_DATE_FORMAT_WITH_MILLIS
        = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");

    public static String convertEpochStringToReqifDateString(String epochString) {
        Date timestamp = new Date(Long.parseLong(epochString));
        return REQIF_DATE_FORMAT_WITH_MILLIS.format(timestamp);
    }
Run Code Online (Sandbox Code Playgroud)

现在,我对此导出进行了测试,但是当它们在本地通过时,它们在服务器上失败,因为它显然位于不同的时区。具体来说,差异如下:

LAST-CHANGE="2017-03-13T21:36:44.261+01:00"
LAST-CHANGE="2017-03-13T20:36:44.261Z"
Run Code Online (Sandbox Code Playgroud)

我已经在测试之前尝试运行一些东西,以确保测试始终在同一时区运行,例如:

TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Run Code Online (Sandbox Code Playgroud)
System.setProperty("user.timezone", "UTC");
Run Code Online (Sandbox Code Playgroud)

以及 JUnitPioneer 注释:

@DefaultTimeZone("UTC")
Run Code Online (Sandbox Code Playgroud)

...但是,它们似乎都没有影响解析输出。

对此我能做什么?我想要的只是某种方法来确保我的测试在同一时区运行,无论运行的机器位于何处,以便我可以正确测试导出。

java timezone unit-testing epoch datetime-format

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