【问题标题】:Visual Studio: Assembly name and Default namespace from project nameVisual Studio:项目名称中的程序集名称和默认命名空间
【发布时间】:2019-09-27 14:24:14
【问题描述】:

上下文:在项目属性中设置程序集名称/默认命名空间(右键单击项目、属性、应用程序选项卡;或编辑 .csproj)。

我想在那里添加一个参数,以明确地让它们跟随项目名称,加上一些自定义后缀。因此,如果我重命名我的项目,则程序集名称/命名空间会跟随该重命名。

示例:名为 foo 的项目 → foo_suffix.dll。如果我将项目重命名为foo1foo1_suffix.dll。 命名空间的行为相同。

阅读Common macros for MSBuild commands and properties, 我尝试在 VS 和 .csproj 文件中都输入 $(ProjectName),但我得到了一个与此名称完全相同的 .dll。

我怎样才能完成这项工作?

【问题讨论】:

  • 我注意到通过在 .csproj 文件中添加 <AssemblyName>$(ProjectName)</AssemblyName> 可以获得所需的行为,但这与我在项目、属性、应用程序选项卡中看到的不一致。
  • $(MSBuildProjectName) 可能比 $(ProjectName) 更适合您的问题,修改 csproj 并将程序集名称/默认命名空间设置为 $(MSBuildProjectName)_suffix。请记住:重新加载项目以更新 UI。
  • 嗨朋友,这个问题有什么更新吗?如果问题仍然阻碍您,请告诉我:)

标签: visual-studio msbuild csproj


【解决方案1】:

我怎样才能完成这项工作?

1。尝试使用来自this document$(MSBuildProjectName) 属性。

您正在开发一个C# project(csproj),而您上面的文档是关于macros in C++ projects(vcxproj)。所以我认为$(MSBuildProjectName)属性在我的几次测试之后会更适合你。

(我试过$(ProjectName),但只有在我设置<AssemblyName>$(ProjectName)</AssemblyName>之类的东西时效果很好,如果我添加$(ProjectName)_suffix之类的后缀,有时输出是_suffix.dll。但它总是很好用如果我使用$(MSBuildProjectName)!)

我得到了想要的行为,但这与我能做到的不一致 在项目、属性、应用程序选项卡中查看。

2。尝试重新加载项目文件(Right-click project, unload.., reload...) 以更新 UI。

从您的评论来看,$(ProjectName)_suffix 似乎在您的机器上运行良好?如果是这样,您仍然可以使用$(ProjectName) 属性。

您所经历的是 Msbuild 和 VS 的预期行为。 VS 将在project loading process 期间从csproj 读取值。然后它通过 UI 显示相关值。

所以在我们重命名项目名称然后构建项目之后,我们可以在输出文件夹中得到一个ProjectName_suffix.dll。但是 UI 仍然没有改变(不一致),因为现在我们需要更新 UI

您可以right-click project node, unload the project=>reload the project 更新用户界面。现在输出的 xx.dll 可以和你在project, Properties, Application tab 看到的一致了。每次重命名项目后都需要我们重新加载项目,这样UI才会和你的xx.dll一致。实际上,虽然 UI 没有更新,但它不会影响您的构建,输出可以是您想要的行为。

3。以上都与Assembly Name and Project Name之间的关系有关。您应该知道的一点是msbuild(csproj) 在创建项目后不会修改源文件(xx.cs)。

所以假设你有一个Class1.cs 文件,其命名空间是Library。如果您将项目重命名为NewLibrary,重新加载项目,您可以在project, Properties, Application tab 中看到命名空间为NewLibrary。但是 Class1.cs 文件的命名空间仍然是旧的Library。这是 VS 中的预期行为,如果您创建一个新的 xx.cs 文件,新的 NameSpace NewLibrary会起作用。

希望以上所有帮助:)

【讨论】:

    猜你喜欢
    • 2011-07-15
    • 2021-01-04
    • 1970-01-01
    • 2013-05-25
    • 2010-09-23
    • 2011-01-13
    • 1970-01-01
    • 2017-07-11
    • 2020-02-08
    相关资源
    最近更新 更多