Visual Studio:项目名称中的程序集名称和默认名称空间

时间:2019-09-27 14:24:14

标签: visual-studio msbuild csproj

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

我想在其中添加一个参数,以使它们在项目名称后面加上一些自定义后缀。因此,如果我重命名项目,则程序集名称/命名空间将跟随该重命名。

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

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

我该怎么做?

1 个答案:

答案 0 :(得分:1)

  

我该怎么做?

1 。尝试使用this document中的$(MSBuildProjectName)属性。

您正在开发C# project(csproj)时,上面的文档大约是macros in C++ projects(vcxproj)。因此,我认为$(MSBuildProjectName)属性在经过几次测试后可能更适合您。

我尝试了$(ProjectName),但是只有在设置类似<AssemblyName>$(ProjectName)</AssemblyName>的情况下它才能很好地工作,如果我添加了类似$(ProjectName)_suffix的后缀,有时输出为{{1 }}。但是如果我使用_suffix.dll

  

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

2 。尝试重新加载项目文件($(MSBuildProjectName)!)以更新UI。

从您的评论看来,Right-click project, unload.., reload...在您的计算机上运行良好?如果是这样,您仍然可以使用$(ProjectName)_suffix属性。

您遇到的是Msbuild和VS的预期行为。 VS将在$(ProjectName)期间从csproj读取值。然后通过UI显示相关值。

因此,在重命名项目名称并构建项目之后,我们可以在输出文件夹中获得project loading process。但是用户界面仍然没有更改(不一致),因为现在我们需要更新用户界面

您可以ProjectName_suffix.dll更新UI。现在输出xx.dll可以与您在right-click project node, unload the project=>reload the project中看到的一致。每次您重命名项目后,都需要我们重新加载项目,然后UI才能与xx.dll保持一致。实际上,即使用户界面未更新,它也不会影响您的构建,输出可能是您想要的行为。

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

因此,假设您有一个名称空间为msbuild的{​​{1}}文件。如果将项目重命名为Class1.cs,请重新加载项目,然后您可以在Library中看到命名空间为NewLibrary。但是Class1.cs文件的命名空间仍旧为NewLibrary。这是VS中的预期行为,如果创建新的xx.cs 文件,则新的NameSpace project, Properties, Application tab 可以使用。

希望以上所有都对您有帮助:)