小编Fri*_*itz的帖子

C# 源生成器应该刷新/删除发出的文件

我创建了一个源生成器来扩展满足某些条件的(部分)类。为了检查和查看生成的代码,我通过将以下内容添加到我的项目中来启用这些文件的发射:

    <PropertyGroup>
        <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
        <CompilerGeneratedFilesOutputPath>Generated</CompilerGeneratedFilesOutputPath>
    </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

只要我不进行重构(例如重命名类),这就有效。因为对于每个类,当我重命名“源”类时,都会生成一个文件,但不会删除该文件。

所以我添加了以下代码来清理所有生成的文件(在清理和重建时)

    <Target Name="CleanSourceGeneratedFiles" AfterTargets="Clean">
        <RemoveDir Directories="Generated" />
    </Target>
Run Code Online (Sandbox Code Playgroud)

然而,每次重建都会失败: Error CS2001 Source file 'xyz.generated.cs' could not be found.

因此,我正在寻找另一种方法来使生成的源代码保持最新,该项目不仅会在每次尝试时进行编译。

msbuild csproj roslyn .net-5 sourcegenerators

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

如何添加源生成器作为 nuget 参考?

如何将源生成器作为 nuget 包添加到 C# net5 项目?

要将项目添加为源生成器,请使用以下代码完成此工作:

<ItemGroup>
  <ProjectReference Include="..\xyz.SourceGenerators\xyz.SourceGenerators.csproj"
    OutputItemType="Analyzer"
    ReferenceOutputAssembly="false"
    SetTargetFramework="TargetFramework=netstandard2.0" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

不过,我正在寻找 XMLPackageReference以添加 nuget 包作为源生成器。

c# .net-5 sourcegenerators csharp-source-generator

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

apksigner - 无效的密钥库格式

如https://developer.android.com/studio/publish/app-signing#signing-manually中所述,我尝试在 Windows 7 上的 git bash 中签署应用程序。

我用它生成一个密钥库, keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-alias 应该使用默认的密钥库类型,这应该没问题。

然后我运行zipalign zipalign -v -p 4 my-app-unsigned.apk my-app-unsigned-aligned.apk 给出“验证成功”(带有一个)

最后我运行 apksigner 这给了我错误:

"C:\....\apksigner.bat" sign --ks my-release-key.jks --out my-app-release.apk my-app-unsigned-aligned.apk
Keystore password for signer #1:
123456
Failed to load signer "signer #1"
java.io.IOException: Invalid keystore format
        at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:658)
        at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:56)
        at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)
        at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:70)
        at java.security.KeyStore.load(KeyStore.java:1445)
        at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCertsFromKeyStore(ApkSignerTool.java:613)
        at com.android.apksigner.ApkSignerTool$SignerParams.loadPrivateKeyAndCerts(ApkSignerTool.java:555)
        at com.android.apksigner.ApkSignerTool$SignerParams.access$200(ApkSignerTool.java:509)
        at com.android.apksigner.ApkSignerTool.sign(ApkSignerTool.java:215)
        at com.android.apksigner.ApkSignerTool.main(ApkSignerTool.java:89)
Run Code Online (Sandbox Code Playgroud)

我还尝试了不同的存储类型,例如pkcs12 …

android android-build apksigner

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

Entity Framework Core 增量整数

我正在寻找与以下 SQL 语句等效的 EF Core C#:

UPDATE TheTable 
SET RevisionId = RevisionId + 1 
WHERE notPk = @someValue
Run Code Online (Sandbox Code Playgroud)

该解决方案不应受到竞争条件的影响。

c# asp.net entity-framework-core .net-6.0

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