dotnet 发布时如何更改 dll 名称?

red*_*888 6 c# .net-3.0 docker .net-core dockerfile

除了最后一行之外,我的所有 .net core dockerfile 都 99% 相同: ENTRYPOINT ["dotnet", "<APP NAME HERE>.dll"]

我似乎很愚蠢,因为否则它们可能都是相同的

有没有办法用命令更改dll名称dotnet publish -c Release -o out?我可以做到这一点而无需修改 csproj 文件或其他任何内容吗?

小智 8

您可以使用此命令来执行构建并重命名程序集:

dotnet msbuild -r -p:Configuration=Release;AssemblyName=foo
Run Code Online (Sandbox Code Playgroud)

在 Linux/macOS 上,您必须在命令周围添加引号,如下所示:

dotnet msbuild -r '-p:Configuration=Release;AssemblyName=foo'
Run Code Online (Sandbox Code Playgroud)

但是,由于设置了全局属性,可能会产生意想不到的副作用。您应该阅读 2019 年 9 月的这个未决问题,因为它直接回答了您有关 Docker 和重命名输出的问题:https ://github.com/dotnet/msbuild/issues/4696

另外,我知道您想避免编辑 .csproj 文件,但如果您不知道,您可以添加该AssemblyName属性并以这种方式设置输出名称。

例如:

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AssemblyName>foo</AssemblyName>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这将创建foo.dll(以及其他文件,例如.pdb.deps.json等)