Как мне это сделать?
1 .Попробуйте использовать $(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...
) для обновления пользовательского интерфейса.
Из вашего комментария кажется, что $(ProjectName)_suffix
хорошо работает на вашем компьютере?Если это так, вы все равно можете использовать $(ProjectName)
свойство.
То, что вы испытали, - это ожидаемое поведение для Msbuild и VS.VS будет считывать значение с csproj
в течение project loading process
.Затем он отображает соответствующее значение с помощью пользовательского интерфейса.
Таким образом, после того, как мы переименуем имя проекта и затем построим проект, мы можем получить ProjectName_suffix.dll
в выходной папке.Но пользовательский интерфейс все еще не изменен (несовместим), потому что теперь нам нужно обновить пользовательский интерфейс .
Вы можете right-click project node, unload the project=>reload the project
обновить интерфейс.И теперь вывод xx.dll может соответствовать тому, что вы видите в project, Properties, Application tab
.Нам необходимо перезагрузить проект каждый раз после того, как вы переименуете проект, тогда пользовательский интерфейс будет соответствовать вашему xx.dll.И на самом деле это не повлияет на вашу сборку, хотя пользовательский интерфейс не обновляется, вывод может соответствовать вашему желаемому поведению.
3 .Все вышеизложенное больше относится к отношениям между Assembly Name and Project Name
.Вам следует знать, что msbuild
(csproj) не будет изменять исходные файлы (xx.cs) после создания проекта.
Предположим, у вас есть файл Class1.cs
с пространством имен Library
.Если вы переименуете проект в NewLibrary
, перезагрузите проект, и вы увидите, что пространство имен теперь NewLibrary
в project, Properties, Application tab
.Но пространство имен для файла Class1.cs все еще старое Library
.Это ожидаемое поведение в VS, и новое NameSpace NewLibrary
будет работать, если вы создадите новый файл xx.cs .
Надеюсь, все вышеперечисленное поможет:)