我创建了一个源生成器来扩展满足某些条件的(部分)类。为了检查和查看生成的代码,我通过将以下内容添加到我的项目中来启用这些文件的发射:
<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.
因此,我正在寻找另一种方法来使生成的源代码保持最新,该项目不仅会在每次尝试时进行编译。
如何将源生成器作为 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 包作为源生成器。
如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 …
我正在寻找与以下 SQL 语句等效的 EF Core C#:
UPDATE TheTable
SET RevisionId = RevisionId + 1
WHERE notPk = @someValue
Run Code Online (Sandbox Code Playgroud)
该解决方案不应受到竞争条件的影响。